一个完整的配置文件示例
<?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>
根节配置
配置文件中的结点“superSocket”是SuperSocket配置信息的根节点,它定义了SuperSocket所需的全局参数。下面是根节点所有attribute的说明:
- maxWorkingThreads:.NET线程池中最大工作线程数。
- minWorkingThreads:.NET线程池中最小工作线程数。
- maxCompletionPortThreads:.NET线程池中最大完成端口线程数。
- minCompletionPortThreads:.NET线程池中最小完成端口线程数。
- disablePerformanceDataCollector:是否禁用性能数据收集器。
- performanceDataCollectInterval:性能数据采集时间间隔,默认值为60,单位为秒。
- isolation:Supersocket实例的隔离等级,None——不隔离;AppDomain——服务器实例将按应用程序域(AppDomain)隔离。
- logFactory:默认logFactory的名字,所有日志工厂都应在“logFactories”子节点中(logFactories将在接下来的文档中介绍)。
服务器实例配置
在根节点中,有一个名为“servers”的子节点,你可以定义一个或多个代表应用服务器实例的服务器配置结点。服务器实例可以使相同的AppServer类型,也可以是不同的AppServer类型。server结点的attributes如下:
- name:服务器实例名称。
- serverType:将被运行的AppServer的类型全名。
- serverTypeName:选中的服务器类型的名称,所有的服务器类型应在serverTypes节点中定义。(serverType将在接下来的文档中介绍)
- ip:服务器监听的IP。你可以指定某一确定的IP,也可以设置为以下值:Any——所有IPv4地址;IPv6Any——所有IPv6地址。
- port:服务器实例监听的端口。
- listenBacklog:the listen back log size.
- mode:socket服务器运行模式:Tcp(默认);Udp。
- disabled:服务器实例是否被禁用。
- startupOrder:服务器实例的启动顺序,bootstrap将按此顺序启动各个服务器实例。
- sendTimeOut:发送数据的超时时间。
- sendingQueueSize:发送队列的最大大小。
- maxConnectionNumber:服务器所允许的最大同时连接数。
- receiveBufferSize:接收数据缓冲区大小。
- sendBufferSize:发送数据缓冲区大小。
- syncSend:是否以同步方式发送数据,默认为false。
- logCommand:是否记录命令。
- logBasicSessionActivity:是否记录会话的一些基本活动,例如连接和断开。
- clearIdleSession:是否清除空闲的(没有数据交互的)会话,默认为false。
- clearIdelSessionInterval:清除空闲会话的时间间隔,默认值为120秒,单位为秒。
- idleSessionTimeOut:会话超时时间,以秒为单位,默认为300秒。
- security:socket服务器的安全连接选项,可选择Empty、Tls、Ssl3,默认值为Empty。
- maxRequestLength:允许的最大请求长度,默认值为1024。
- disableSessionSnapshot:是否禁用会话快照,默认值为false。
- SessionSnapshotinterval:抓取会话快照的时间间隔,默认值为5,单位为秒。
- keepAliveTime:keep alive消息发送时间间隔。默认值为600, 单位为秒。
- keepAliveInterval:keep alive失败重试的时间间隔。默认值为60, 单位为秒。
- certificate:为X509Certificate准备的配置结点,将被用于服务器实例。
- 它有2种用法:
- 从证书文件加载证书。
<certificate filepath="localhost.pfx" password="supersocket" />
- 从本地证书存储中加载证书。
<certificate storename="My" thumbprint="f42585bceed2cb049ef4a3c6d0ad572a6699f6f3" />
- connectionFilter:用于服务器实例的连接过滤器的名称,如有多个过滤器则应以“,”或“;”隔开(半角)。连接过滤器应该定义在配置根节点的子节点中,我们将在后续的文档中介绍。
- commandLoader:用于服务器实例的命令加载器的名称,如有多个加载器则应以“,”或“;”隔开(半角)。命令加载器应该定义在配置根节点的子节点中,我们将在后续的文档中介绍。
- logFactory:用于服务器实例的日志工厂,如未配置,将使用根配置中的日志工厂。
- listeners:为支持在一个服务器实例中多个IP/端口对监听而设计的配置节点。listeners节点应至少包含一个具有如下属性的子节点:
- 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:用于服务器实例的请求过滤器工厂的名称。
服务器类型配置
服务器配置结点是根节点下的一个配置集。你可以添加一个或多个名为“add”且具有“name”和“type”的元素:
<serverTypes> <add name="TelnetServerType" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> </serverTypes>
由于定义的服务器类型名称是“TelnetServerType”,你可以设置serverTypeName属性为你所要运行的服务器实例,其类型应该为TelnetServerType
<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>
没有评论:
发表评论