2013年3月12日

SuperSocket的研究(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>

根节配置

配置文件中的结点“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>

没有评论:

发表评论