想要清楚了解WCF的工作原理。 让我们说一个WCF服务暴露了一个函数A. 现在客户端创建了5个线程,并且在每个线程中调用具有不同参数的函数A.
我认为这应该发生 - 将为每个线程调用该函数创建一个新的函数A实例。有人可以证实这一点。 我写了一个没有这样做的POC,它给出了不一致的结果。
答案 0 :(得分:5)
这取决于您通过实现服务合同的类的ServiceBehavior属性进行的服务配置:
[ServiceBehavior(
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Multiple)]
使用参数InstanceContextMode
,您可以告诉WCF您希望如何托管您的服务:
当一个主机对象接收并行操作调用时,接下来就是同步。您可以使用ConcurrencyMode
参数控制行为:
答案 1 :(得分:1)
默认情况下,每次调用都会创建一个新的wcf服务实例,例如, here
答案 2 :(得分:0)
没有像新的功能实例这样的东西。它更像是一个阶级的例子。
您可以通过更改正确的元属性来配置服务的行为方式。
您可以在每次调用时实例化您的服务实现。它也可以作为单例(所有调用的唯一服务实例)。
Here you can find information on creating singleton WCF service