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

有帮助吗?

解决方案

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

切换到concurrencyMode.single使编程变得更简单 - 不再担心服务类中的并发。但是它序列化了所有请求 - 一次只能处理一个请求,因此将迅速成为性能瓶颈。

您提到您的服务是无状态的 - 因此,为什么不使用通常同意的最佳练习 - 不是单身人士,而是常规的“每句话”服务班。在该模式下,每个请求都会获得您的服务类的新实例,对需要多线程编程(所有多线程均由WCF运行时处理),您可以同时处理多个请求 - 对我来说,这是唯一的好处,而且没有下来!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top