0

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

4

1 回答 1

3

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

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

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

于 2010-06-30T14:04:52.093 回答