WCF。 ConcurrencyMode.Multiph的开销
-
01-10-2019 - |
题
我有一个同步使用的WCF服务,但是其conturrencyMode设置为conturrencyMode.multiple值,因为该服务实际上是无状态的。这种模式施加了多少开销?将模式更改为concurrencyMode.single是否有意义?
解决方案
它并没有真正强加任何开销 - 除了单个服务实例必须处理并发访问,必须是200%线程安全的事实 - 这是相当棘手的编程。
切换到concurrencyMode.single使编程变得更简单 - 不再担心服务类中的并发。但是它序列化了所有请求 - 一次只能处理一个请求,因此将迅速成为性能瓶颈。
您提到您的服务是无状态的 - 因此,为什么不使用通常同意的最佳练习 - 不是单身人士,而是常规的“每句话”服务班。在该模式下,每个请求都会获得您的服务类的新实例,对需要多线程编程(所有多线程均由WCF运行时处理),您可以同时处理多个请求 - 对我来说,这是唯一的好处,而且没有下来!
不隶属于 StackOverflow