我是否需要在使用ConcurrencyMode.Multiple
和InstanceContextMode.PerCall
或InstanceContextMode.PerSession
的WCF服务中实现自己的锁定?由于在每次通话或新会话中都会创建一个新的ServiceContext
对象,我应该认为我不会,但我很不确定。
示例:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults = false, MaxItemsInObjectGraph = Int32.MaxValue)]
public class ExampleService : IExample
答案 0 :(得分:2)
如果使用PerCall实例化,则无需担心并发模式,因为只有一个请求可以使用该实例,因此您不会遇到锁定问题。
对于PerCall,如果您的客户端使用会话并且能够同时发送多个请求(例如,使用来自众多线程的相同代理),则是,您将需要锁定非线程安全的对象。我猜你正在使用PerSession,因为你想保留状态,所以你需要锁定状态改变方法/代码。
答案 1 :(得分:2)