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
{...}
我如何允许一次只处理一个客户端而强制其他客户端排队等待?
您需要控制服务的实例数量以及并发模式。默认情况下,您的服务将被配置为InstanceContextMode.PerSession
。这意味着所有客户端A的请求将被顺序处理,客户端B的请求也将被顺序处理,但它们不会被顺序处理,因为它们没有使用相同的服务实例。
尝试修改您的ServiceBehavior
如下:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{...}
有关该主题的更多信息,请查看MSDN关于会话,实例化和并发的文档