我是否需要在使用 ConcurrencyMode.Multiple
的 WCF 服务中实现自己的锁定?和 InstanceContextMode.PerCall
或 InstanceContextMode.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/