我有一个场景,客户端请求我的服务然后我的服务(A)请求另一个服务(B),服务(B)返回一个值,服务(A)使用它来向客户端返回一个值。 我正在使用多线程来捕获整个场景。 我看过Rerant多线程,但无法工作,因为我有多个客户端将访问相同的服务。 有人可以指点我的方向。亲切的问候。
答案 0 :(得分:0)
您可以将服务设置为ConcurrencyMode.Multiple和InstanceContextMode.Single,然后在每个单服务器实例中手动处理多线程。
[ServiceBehavior(
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode = InstanceContextMode.Single)]
public class BService : IB
{ ... }
MSDN有article on Sessions, Instancing, and Concurrency描述使用此模型的后果以及其他选项。
如果您使用的是.NET 4.5,则可以避免在使用基于任务的异步模式等待来自服务B的响应时锁定服务A中的线程,如this MSDN article中所述。