看了老徐的bolg
WCF热门问题编程示例(2)多个实例调用一个WCF服务操作,需要等待服务响应吗
http://www.cnblogs.com/frank_xl/archive/2009/06/27/1509845.html
发现有一句话我不理解
服务并发模式对客户端请求处理也有影响,当服务的并发模式设置为ConcurrencyMode.Multiple,客户端请求不会放入WCF消息队列,会直接转发给WCF服务实例处理,此时不会等待。默认的最大并发调用数字16,而且限流对此也有影响,大家处理的时候应该注意。
他这里说的最大调用数字为16是什么意思难道WCF只能同事支持最大16个线程吗
那也就是说只能同时存在最多16个会话吗?
那一个几W访问题的网站怎么用WCF啊谢谢
WCF热门问题编程示例(2)多个实例调用一个WCF服务操作,需要等待服务响应吗
http://www.cnblogs.com/frank_xl/archive/2009/06/27/1509845.html
发现有一句话我不理解
服务并发模式对客户端请求处理也有影响,当服务的并发模式设置为ConcurrencyMode.Multiple,客户端请求不会放入WCF消息队列,会直接转发给WCF服务实例处理,此时不会等待。默认的最大并发调用数字16,而且限流对此也有影响,大家处理的时候应该注意。
他这里说的最大调用数字为16是什么意思难道WCF只能同事支持最大16个线程吗
那也就是说只能同时存在最多16个会话吗?
那一个几W访问题的网站怎么用WCF啊谢谢
1.MaxConcurrentCalls 获取或设置一个值,该值指定整个 ServiceHost 中正在处理的最多消息数。 最大并发调用数目,默认16。
这个属于服务限流行为。这个考虑问题是从整个ServiceHost 角度来说的。
前面一个文章讨论过。http://www.cnblogs.com/frank_xl/archive/2009/07/22/1528911.html
2.ConcurrencyMode.Multiple:服务实例是多线程的。无同步保证。因为其他线程可以随时更改服务对象,所以必须始终处理同步与状态一致性。这个考虑问题是针对线程访问单个的服务示例。
3.限流由ServiceThrottlingBehavior类定义,包括三个重要的属性: MaxConcurrentCalls、MaxConcurrentSessions、MaxConcurrentInstances,它们分别的默认值为16,10和264.服务实例化类别:单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service)。
当单例服务:只有一个服务实例,针对ServiceHost 的限流设置都会作用到一个服务实例上。
会话和单调:服务实例个数不定,针对针对ServiceHost 的限流设置会作用到全部的服务实例上。
而单个服务实例线程的并发访问模式ConcurrencyMode,则是不变的。 Single、Reentrant 与 Multiple 来决定服务实例如何被线程访问。
5.再回头理解上面的话,相对容易一些。单个服务实例的线程访问模式是ConcurrencyMode.Multiple。但是这个也受到最大MaxConcurrentCalls的制约。因为它决定了整个 ServiceHost 中正在处理的最多消息数。
希望对你的理解有帮助,非常感谢你的提问,欢迎交流