c# - ConcurrencyMode.Multiple 和 WebOperationContext.Current 静态属性

标签 c# wcf concurrency state global

我有一个带有 ConcurrencyMode = ConcurrencyMode.Multiple 选项的 WCF 服务。考虑到服务请求是并发处理的事实,我可以安全地读取传入请求 HTTP header 并设置传出响应吗?我怀疑是因为 WebOperationContext.Current 是一个全局状态。它会检查当前线程吗?

最佳答案

ConcurrencyMode.Multiple 仅当您具有允许共享服务实例的实例化时才有意义。在 REST 服务的情况下,您很可能没有这样的实例化(除非您使用的是单例服务)并且您不应该有这样的实例化(因为 REST 服务不维护状态 - 所有状态都在请求中传输)。

REST 服务使用每个请求实例化,每个请求都由一个新线程(来自线程池)和服务类的新实例自动提供服务。您根本不需要此设置。

WebOperationContext.Current 从上下文中的私有(private)线程静态变量中检索当前上下文,因此它不会在线程之间共享。

关于c# - ConcurrencyMode.Multiple 和 WebOperationContext.Current 静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531753/

相关文章:

c# - 为什么无法识别或访问 "<ControlTemplate.Triggers>"?

c# - 有效关闭 WCF 4 channel 的正确方法

java - WSDL 出现次数为 ="0",数据未发送

.net - 在 WCF 中,数据协定类可以相互继承吗?

Django + Postgresql -> 未处理的异常

java - new Thread(Runnable runnableObj) 与 new Thread(Runnable runnableObj) 对比扩展线程

c# - 如何在 MVVM 模式中更新模型和 View 模型?

c# - 从 short 中获取前 13 位

c# - 通过 XAML 绑定(bind)将自定义对象传递给 UserControl

java - 是否可以通过它的 key 同步 ConcurrentHashMap 更新?