高同時WCF構成

6172 ワード

WCFをサービスインタフェースとして使用する場合、TCPモードはHttpよりも効率的であることは間違いなく、Binary/MTOMフォーマットのバインドもTextフォーマットのバインドよりも効率的である.
2つのendpoint、1つはデバッグに使用されます:ms-mexのbindingはWCFデバッグツールとリモートオブジェクトアプリケーションを便利にするために使用され、もう1つは実際の動作モード構成:customBindingです.
インタフェースの同時性数を高めるために,同時性に及ぼす各パラメータの影響を特化した実験的custonBindingにおいて,以下の構成は,現在の実験的tpsよりも高いパラメータ構成である.
<system.serviceModel>
    <services>
      <service name="GW.Stone.BLL.Wcf.StoneService" behaviorConfiguration="NetTcpBehavior">
        <!--     ,      1800tps,     -->
        <endpoint address="net.tcp://127.0.0.1:50061/GWStoneService" binding="customBinding" contract="GW.Stone.BLL.Wcf.IStoneService" bindingConfiguration="MySessionBinding">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        
        <!--ms-mex    ,     1000tps,       wcf        。
          mex     ,     proxy          ,VS                 app.config    。-->
        <endpoint address="net.tcp://127.0.0.1:50062/GWStoneService" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </services>

    <!--behavior              。-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="NetTcpBehavior">
          <serviceMetadata httpGetEnabled="false" />
          <!--                 -->
          <serviceDebug includeExceptionDetailInFaults="True" />
           
          <!--          
             ServiceThrottlingBehavior            ,              ,             。
          http://msdn.microsoft.com/zh-cn/library/system.servicemodel.description.servicethrottlingbehavior(v=vs.110).aspx
          MaxConcurrentCalls            ServiceHost         。          16  。 
          MaxConcurrentInstances          ServiceHost        InstanceContext    。    MaxConcurrentSessions     MaxConcurrentCalls     。
          MaxConcurrentSessions       ServiceHost           。             。           100  。 
                              ,  ,             ServiceThrottlingBehavior                       。
                  <serviceThrottling>-->
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <bindings>
      <customBinding>
        <!--WSHttpBindingBase   
        http://msdn.microsoft.com/zh-cn/library/vstudio/System.ServiceModel.WSHttpBindingBase_properties(v=vs.100).aspx
        -->
        <binding name="MySessionBinding">
          <!--transactionFlow         ,               WS-Transactions。
                   ,   truefalsefalse。-->
          <transactionFlow />
          
          <!--binaryMessageEncoding                 Windows Communication Foundation (WCF)                。
          http://msdn.microsoft.com/zh-cn/library/ms731780(v=vs.110).aspx
          -->
          <binaryMessageEncoding  />
          
          <!--reliableSession       ,             ,                         。
          http://msdn.microsoft.com/zh-cn/library/System.ServiceModel.Channels.ReliableSessionBindingElement(v=vs.110).aspx
          maxPendingChannels                   。            。      4。           ,     16384。 
                         。        ,                  ,       (         )。
                     。                         ,                 。
          -->
          <reliableSession  maxPendingChannels="20"/>
          
          <!--tcpTransport                  TCP   。
          http://msdn.microsoft.com/zh-cn/library/ms731366(v=vs.110).aspx
          listenBacklog    Web               。 connectionLeaseTimeout                           。
                       ,      Web               。
            ListenBacklog    ,WCF        ,        ,               。     16 *     。
          maxPendingConnections                   ,     100。
          maxPendingAccepts                             。      2-->
          <tcpTransport  listenBacklog="400" maxPendingConnections="1000" maxPendingAccepts="10" />
        </binding>
      </customBinding>
    </bindings>
  </system.serviceModel>