看了老徐的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啊谢谢

解决方案 »

  1.   

    “那一个几W访问题的网站怎么用WCF啊 ”不是每个人访问一次,都会调用一次web service的
      

  2.   

    服务并发模式对客户端请求处理也有影响,当服务的并发模式设置为ConcurrencyMode.Multiple,客户端请求不会放入WCF消息队列,会直接转发给WCF服务实例处理,此时不会等待。默认的最大并发调用数字16,而且限流对此也有影响,大家处理的时候应该注意。应该是并发16服务实例。类似有16个服务开着。。
      

  3.   

    看了你的问题。  我们先看看几个概念:
    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 中正在处理的最多消息数。
    希望对你的理解有帮助,非常感谢你的提问,欢迎交流