wcf - 使用 ConcurrencyMode.Multiple 和 InstanceContextMode.PerCall 锁定

标签 wcf

我是否需要在使用 ConcurrencyMode.Multiple 的 WCF 服务中实现自己的锁定?和 InstanceContextMode.PerCallInstanceContextMode.PerSession ?自新ServiceContext对象是在每次调用或新 session 时创建的,我认为我不会,但我不确定。

例子:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession,
     IncludeExceptionDetailInFaults = false, MaxItemsInObjectGraph = Int32.MaxValue)]
public class ExampleService : IExample

最佳答案

如果使用 PerCall 实例化,则无需担心并发模式,因为只有一个请求可以使用该实例,因此不会出现锁定问题。

对于 PerCall,如果您的客户端使用 session 并且能够同时发送多个请求(例如,使用来自多个线程的相同代理),那么是的,您将需要锁定不是线程安全的对象。我猜您使用 PerSession 是因为您想保留状态,因此您需要锁定状态更改方法/代码。

关于wcf - 使用 ConcurrencyMode.Multiple 和 InstanceContextMode.PerCall 锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7541748/

相关文章:

c# - 处理 WCF 服务应用程序上的数据库更改

wcf - 如何通过错误处理有效地处理 WCF 服务

c# - 我的 WCF 客户端构造函数重载在哪里?

wcf - 如何实现Windows Phone 7流式上传到PC

c# - 使用 IDispatchMessageInspector 获取请求的远程地址

asp.net - 将声明式的 PrimaryPermission 转换为编程式的 .Demand

.net - WCF 服务 - 使用用户名身份验证的证书和消息安全

wcf - 如何为WCF服务检索单个文件WSDL(平面WSDL)

c# - 监视 ADO.NET 连接打开时间

c# - 从 WP8 后台代理引用 WCF 服务