代码之家  ›  专栏  ›  技术社区  ›  Andrei Sedoi

WCF。并发模式的开销。多个

  •  0
  • Andrei Sedoi  · 技术社区  · 16 年前

    我有一个同步使用的WCF服务,但它的concurrencyMode设置为concurrencyMode.multiple值,因为服务实际上是无状态的。这种模式会增加多少开销?将模式更改为concurrencyMode.single是否有意义?

    1 回复  |  直到 16 年前
        1
  •  3
  •   marc_s MisterSmith    16 年前

    它实际上并没有增加任何开销——除了单个服务实例必须处理并发访问之外,它必须是200%线程安全的——这是一个相当棘手的编程。

    切换到concurrencyMode.single使编程更简单-不再担心服务类中的并发性。但它会序列化所有请求——每次只能处理一个请求,因此很快就会成为性能瓶颈。

    您提到您的服务是无状态的—所以为什么不使用通常商定的最佳实践—不是单例服务,而是常规的“每次调用”服务类。在这种模式下,每个请求都会得到一个新的服务类实例,不必担心需要多线程编程(所有多线程都由WCF运行时处理),您可以同时处理多个请求——对我来说,这只是好处,而且没有负面影响!