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>