WCF服务和线程

kou*_*des 8 .net c# wcf multithreading

我创建了一个简单的WCF(.NET 3.5)服务,它定义了10个合同,这些合同基本上是对提供的数据进行计算.目前我预计很少有客户打电话给其中一些合同.如何使服务更具响应性?我觉得服务会等到它处理一个请求转到下一个请求.如何在WCF中使用多线程来加快速度?

cas*_*One 22

虽然我同意贾斯汀的回答,但我相信在WCF如何运作方面可以有更多的亮点.

你做了具体的陈述:

我觉得服务会等到它处理一个请求转到下一个请求.如何在WCF中使用多线程来加快速度?

服务的并发性(它可以同时进行多少次调用)取决于附加到服务的ConcurrencyModeServiceBehavior.默认情况下,此值表示ConcurrencyMode.Single将逐个序列化调用.

但是,这可能不像你想象的那么多.如果您的服务InstanceContextMode等于InstanceContextMode.PerCall那么这是一个非问题; 每次调用都会创建一个新的服务实例,而不会用于任何其他调用.

但是,如果您有单例或基于会话的服务对象,则将序列化对该服务实现实例的调用.

您可以随时更改ConcurrencyMode,但请注意,如果这样做,您将不得不手动处理并发问题和访问资源,因为您已明确告知WCF您将这样做.

因为不只是改变这些是非常重要的,你认为这会导致更高的性能.虽然没有那么多的并发性,服务的实例化方面是服务的身份非常的一部分(如果它是会话或不基于会话),并改变它们影响客户消费的服务,所以不做它很轻松.

当然,这说没什么,实际上是在码是否实施该服务是有效的.当你指出是这种情况时,这肯定是需要调查的东西.