WCF并发模型混淆

  • 本文关键字:模型 并发 WCF c# wcf
  • 更新时间 :
  • 英文 :


我正在阅读这个msdn页面,它说并发模型默认为single:http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx

是的,这个页面看起来像是为每个客户端创建了一个新实例:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx(参见每次呼叫服务标题):

"每次呼叫服务是Windows Communication Foundation的默认服务实例化模式。为每次呼叫配置服务类型时激活、服务实例、公共语言运行库(CLR)对象,仅在客户端调用进行时存在。每个客户请求获取一个新的专用服务实例。"

我读错了吗?

顺便说一句,我正在windows服务中托管我的WCF。

是单个还是多个?

CodeProject上发生的事情有一个很好的解释。以下是URL:http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-and

长话短说,它是InstanceMode和Concurrent的结合。默认设置是对InstanceMode使用PerCall,对Concurrency使用Single。净效应:

  • 为您的请求提供服务的对象的新实例将为服务的每次调用创建(PerCall
  • 您的服务一次只能使用一个线程为请求提供服务(单个

不要将其与InstanceMode=Singleton和ConcurrentMode=Multiple或Reentrant混淆,后者中一个实例在多个线程上提供多个请求。

看看这篇文章:http://msdn.microsoft.com/en-us/library/ms731193.aspx

"在PerCall实例化中,并发性是不相关的,因为每条消息都由一个新的InstanceContext处理"

最新更新