WCF并发模型混乱

时间:2012-02-03 16:31:28

标签: c# wcf

我正在阅读这个msdn页面,其中说并发模型默认为单一: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)   对象,仅在客户端调用正在进行时存在。每个客户   请求获取一个新的专用服务实例。“

我读错了吗?

BTW我正在Windows服务中托管我的WCF。

是单身还是多人?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

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

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