为每个会话创建虚拟队列

本文关键字:虚拟 队列 创建 会话 | 更新日期: 2023-09-27 18:01:50

我想异步但按顺序处理请求。我想为每个会话创建一个虚拟队列意味着一个用户进程的所有请求在一个队列中,但另一个用户的请求在另一个队列中。即两个用户的请求并行处理,但一个用户的请求应按顺序处理。

我如何实现这个?请建议。

为每个会话创建虚拟队列

假设用户直接连接到您的服务,而不是通过代理,您应该定义您的服务如下:

[ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,    
  )]

InstanceContextMode=InstanceContextMode.PerSession -这意味着每个客户端在整个会话中为其服务实例"获得"自己的工作线程,因此多个客户端有多个线程。ConcurrencyMode=ConcurrencyMode.Single -意味着客户端一次只能对服务进行一个调用,因此调用按顺序处理。