首页 > 代码库 > WCF可靠性会话之服务分流

WCF可靠性会话之服务分流

 

可靠性绘画答条件:

           (1)服务绑定支持可靠性绘画:特别是netTcpBinding、wsHttpBinding及wsDualHttpBinding.

                         wsDualHtttpBinding可靠性绘画始终都是可用的,不须要配置,然上面的其他两种须配置,以wsHttpBinding为例,配置如下:

                                         <wsHttpBinding>

                                              <binding  name="mybinding" >

                                                    <reliablesession   enabled="true"  ordered="true" inactivityTimeout="00:10:00" />     <--最后一个属性表示提高闲置超时时间-->

                                              </binding>

                                         </wshttpBinding>

                  当然你也可以使用定制绑定  <customBinding>(推荐)设置更丰富(详情百度!)

ServiceThrottleBehavior提供了很多吞吐量控制的设置:

 (1)MaxConcurrentCalls: 限制并发请求(也就是同时向服务器发送请求的个数)– 缺省为16

 

 (2)MaxConcurrentInstances: 限制服务实例的数量(也就是服务端创建的服务实例的个数)– 缺省为int.MaxValue,该值一般大于等于maxConcurrentCalls;

 

 (3)MaxConcurrentSessions:限制活动会话数量,包括传输,可靠性与安全会话和应 用程序会话– 缺省10 

  <serviceThrottling maxConcurrentCalls="30" maxConcurrentInstances="2147483647" maxConcurrentSessions="30" />

 

下面是完整配置:

   <system.ServiceModel>

        

        <wsHttpBinding>

 

            <binding  name="mybinding" >

 

                    <reliablesession   enabled="true"  ordered="true" inactivityTimeout="00:10:00" />     <--最后一个属性表示提高闲置超时时间-->

 

            </binding>

 

        </wshttpBinding>

 

        <services>

                <service  name="Services.OneServices"  behaviorConfiguration="mybehavior">

                       <host>

                            <baseAddresses>

                                    <add  address="http://loacalhost:3333/mywcf"  />

                            </baseAddresses>

                       </host>

                       <endpoint  address=""   binding="wsHttpBinding"  Contract="Contracts.IOneContract"  bindingConfiguration="mybinding"></endpoint>

                       <endpoint  address="mex"  binding="mexHttpBinding" Contract="IMetadataExchange" />

                </service>

        </services>

        <behaviors> 

               <serviceBehaviors >

                      <behavior  name="mybehavior">

                            <serviceMetadata  HttpGetEnabled="true" />

                              <serviceThrottling maxConcurrentCalls="30" maxConcurrentInstances="2147483647" maxConcurrentSessions="30" />

                      </behavior>

               <serviceBehaviors>

        </behaviors>

   </system.ServiceModel>