SuperSocket 1.5 Documentation译文 4 ----- SuperSocket的基本配置
一个简单的配置
<?xml version="1.0"?> <configuration> <configSections> <section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" /> </configSections> <appSettings> <add key="ServiceName" value="SupperSocketService" /> </appSettings> <superSocket> <servers> <server name="TelnetServerA" serverTypeName="TelnetServer" ip="Any" port="2020"> </server> <server name="TelnetServerB" serverTypeName="TelnetServer" ip="Any" port="2021"> </server> </servers> <serverTypes> <add name="TelnetServer" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> </serverTypes> </superSocket> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> </startup> </configuration>
根配置
配置节点“SocketServer”是SuperSocket配置的根结点,它定义SuperSocket要求的全局参数。让我来解释所有的根节点的属性:
- maxWorkingThreads: .NET线程池最大工作线程数
- minWorkingThreads: .NET线程池最小工作线程数
- maxCompletionPortThreads: .NET线程池最大完成线程数
- minCompletionPortThreads: NET线程池最小完成线程数
- disablePerformanceDataCollector: 是否禁用性能数据收集器
- performanceDataCollectInterval: 性能数据采集的时间间隔(以秒为单位,默认值:60)
- isolation: SuperSocket情况下隔离级别无 - 无隔离的AppDomain - 将被隔离的应用程序域服务器实例(这行是谷歌翻译出来的)
- logFactory:默认的LogFactory的名字,所有的日志工厂的子节点“log Factories“将在该节点以下中定义
服务器配置
在的根配置节点,子节点命名为“服务器”,您可以定义一个或多个服务器配置节点,它代表应用程序服务器实例。该服务器实例的AppServer类型可以是相同的,也可以是不同的AppServer类型。所有的服务器节点的属性:
- name:服务器实例的名称
- serverType: 你要运行的 AppServer type全名(译者猜:名词空间+类名 如SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer)
- serverTypeName:选择的服务器类型,所有类型的服务器的名称应该被定义在serverTypes节点以下
- ip:监听的IP地址的服务器实例。您可以设置一个确切的IP,你也可以设置下面的值 -Any -all IPv4 address -IPv6Any -all IPv6 address
- port: 服务器实例的监听端口
- listenBacklog:侦听backlog的大小
- mode: socket服务器的运行模式,TCP(默认)或UDP
- disabled: 是否禁止服务器实例
- startupOrder:服务器实例的启动顺序,bootstrap会按这个值启动所有服务器实例
- sendTimeOut: 发送数据超时
- sendingQueueSize:发送队列的最大大小
- maxConnectionNumber: 在相同时间允许连接的最大连接数的服务器实例
- receiveBufferSize: 接收缓冲区的大小
- sendBufferSize: 发送缓冲区的大小
- syncSend: 在同步模式下发送数据,默认值:false
- logCommand: log命令是否执行记录
- logBasicSessionActivity: 是否记录基本活动,如会话连接或关闭
- clearIdleSession:真或假,是否清除空闲会话。默认值是false
- clearIdleSessionInterval: 清除空闲会话的时间间隔。默认值是120,单位为秒
- idleSessionTimeOut: 会话超时时间。默认值是300,单位为秒
- security: 空,TLS,SSL3。socket服务器的安全选项。默认值是空的
- maxRequestLength: 允许的最大请求长度。默认值是1024
- disableSessionSnapshot: 是否禁用会话快照。默认值是false(估计错了..)
- sessionSnapshotInterval: 会话快照的时间间隔。默认值是5,在几秒钟内
- keepAliveTime: 保活命令间隔。默认值是600,单位为秒.
- keepAliveInterval: 保活命令的失败后重试的时间间隔。默认值是60,单位为秒。
-
certificate: 它是一个配置为X509Certificate的元素将被用在此服务器实例(不懂...)
有两种用法:
-
一个是证书文件加载证书
<certificate filePath="localhost.pfx" password="supersocket" />
-
另一个是从本地证书存储加载证书
<certificate storeName="My" thumbprint="f42585bceed2cb049ef4a3c6d0ad572a6699f6f3"/>
-
-
connectionFilter你将要在服务器实例中使用的连接过滤器的名称, 多个过滤器用','或';'分隔. connectionFilter将在随后的文档中引入在根节点的子节点中定义
-
commandLoader: 你将要在服务器实例中使用的命令加载器名称, 多个加载器用','或';'分隔. Commandloaders将在随后的文档中引入在根节点的子节点中定义
-
logFactory: 你将要在服务器实例中使用的日志工厂. 如果你不设置它,根配置中定义的日志工厂将被使用
-
listeners: 它是一个配置元素,其目的是支持在一台服务器实例中监听多个IP/端口. 监听节点包含一个或多个子节点的属性定义象下面这样:
ip: 监听ip port: 监听端口 backlog: 监听返回日志大小 security: 安全模式(None/Default/Tls/Ssl/...)
例子:
<server name="EchoServer" serverTypeName="EchoService"> <listeners> <add ip="Any" port="2012" /> <add ip="IPv6Any" port="2012" /> </listeners> </server>
-
requestFilterFactory: 你将要在服务器实例中使用的请求过滤器工厂名称
服务器类型配置
Server types节点是在根节点下的一个配置节点集合. 您可以添加一个或多个元素名称是“add”属性是“name”和“type”节点:
<serverTypes> <add name="TelnetServerType" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> </serverTypes>
由于定义的serverTypeName
是“TelnetServerType
”,你可以设置配置属性“serverTypeName”在你的服务器实例中以“Telnet ServerType”这种类型运行:
<server name="TelnetServerA" serverTypeName="TelnetServerType" ip="Any" port="2020"> </server>
日志工厂配置
和服务器类型的配置相同,你也可以用它在服务器定义一个或多个日志工厂,也可以在根配置设置日志工厂:
<logFactories> <add name="ConsoleLogFactory" type="SuperSocket.SocketBase.Logging.ConsoleLogFactory, SuperSocket.SocketBase" /> </logFactories>
使用它的根配置:
<superSocket logFactory="ConsoleLogFactory"> ... ... </superSocket>
在服务器节点:
<server name="TelnetServerA" logFactory="ConsoleLogFactory" ip="Any" port="2020"> </server>