【问题标题】:Does WCF convert parallel calls from the same client (using different threads) to be in serial?WCF 是否将来自同一客户端(使用不同线程)的并行调用转换为串行调用?
【发布时间】:2009-06-22 13:42:17
【问题描述】:

我有自托管的 net tcp WCF 服务,它公开了两种方法,并且该服务不是线程安全的,它是 (PerSession)。

我发现我的同事开发者正在使用该服务,从不同的线程访问同一个服务对象,到现在它工作正常。

所以我问你是否有来自同一个客户端的并行调用,那么服务将串行?还是我错了?从不同线程访问 wcf 服务对象有好处吗?

【问题讨论】:

    标签: c# wcf multithreading


    【解决方案1】:

    “每个会话”是"instance context mode" - 这只是保证在会话期间为您提供相同的服务端对象(实现服务)。我相信你应该看看"concurrency mode"。如果这是“单一”,那么呼叫是同步的(串行)——但这不是唯一的设置; “multiple”和“re-entrant”将允许多个线程同时进入服务。

    【讨论】:

    • 好的,我问的是同一个客户端的不同调用,默认的并发模式是什么,因为服务上没有提到
    • 默认是单的,所以是的,它们是串行的。请注意,这与实例上下文模式结合使用 - 因此只有对同一会话的调用才会被序列化(但具有不同 svc 对象的两个不同会话可以并行运行)。
    【解决方案2】:

    Juval Lowy 的“Programming WCF Services”的第 8 章包含了您可能需要了解的有关 WCF 并发性的所有内容。这是 WCF 的非官方“圣经”。我强烈建议检查一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 2013-05-16
      • 2019-01-06
      • 2015-07-22
      相关资源
      最近更新 更多