WCF服务Web服务并发性

本文关键字:服务 并发 Web WCF | 更新日期: 2023-09-27 17:49:16

我有一个WCF服务,我想一次处理来自所有客户端的一个请求。我希望客户端A的请求被处理,客户端B等待,直到客户端A完成之前,服务甚至试图查看它。我认为下面的代码完成了这个任务。

[ServiceContract]
public interface IRestServiceImpl
{...}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}

我如何允许一次只处理一个客户端而强制其他客户端排队等待?

WCF服务Web服务并发性

您需要控制服务的实例数量以及并发模式。默认情况下,您的服务将被配置为InstanceContextMode.PerSession。这意味着所有客户端A的请求将被顺序处理,客户端B的请求也将被顺序处理,但它们不会被顺序处理,因为它们没有使用相同的服务实例。

尝试修改您的ServiceBehavior如下:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, 
                 InstanceContextMode=InstanceContextMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}

有关该主题的更多信息,请查看MSDN关于会话,实例化和并发的文档