Osh*_*hin 3 wcf multithreading
想要清楚地了解WCF的工作方式。假设WCF服务公开了一个函数A。现在,客户端创建了5个线程,并且每个线程中的每个线程都使用不同的参数调用函数A。
我认为这应该发生-为该函数的每个线程调用都会创建一个新的函数A实例。有人可以确认这一点。我写了一个没有这样做的POC,结果不一致。
这取决于通过实现服务合同的类上的ServiceBehavior属性进行的服务配置:
[ServiceBehavior(
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Multiple)]
Run Code Online (Sandbox Code Playgroud)
使用该参数,InstanceContextMode您可以告诉WCF如何托管服务:
接下来的事情是同步,当一个主机对象收到并行操作调用时。您可以使用ConcurrencyMode参数控制行为: