我只想通过建立我的服务的实例上下文模式的可能性,并有我两个选择。:PerCall与MaxConcurrentCall设置为1和单实例服务
1)设置的InstanceContext模式单一 2)设置的InstanceContext模式PerCall并设置MaxConcurrentCalls 1
随着第一个选项,我必须对申请的关键部分的同步服务,但与第二个选项,我不必这样做。
哪个选项是优选的,请指导。
我只想通过建立我的服务的实例上下文模式的可能性,并有我两个选择。:PerCall与MaxConcurrentCall设置为1和单实例服务
1)设置的InstanceContext模式单一 2)设置的InstanceContext模式PerCall并设置MaxConcurrentCalls 1
随着第一个选项,我必须对申请的关键部分的同步服务,但与第二个选项,我不必这样做。
哪个选项是优选的,请指导。
有了第一个选项,我必须在服务的关键部分应用同步,但第二个选项我不必那样做。
如果设置MaxConcurrentCalls
1,你永远只能有一个活动的呼叫,这将意味着你不需要的InstanceContext
同步无关!
如果MaxConcurrentCalls
大于1,则:
用的InstanceContext =单,并发呼叫将分享服务类的同一个实例。因此,在访问服务类的实例成员以及访问其他共享资源(如静态属性)时,您将需要同步。
用的InstanceContext = PerCall,每次调用会得到它自己的服务类的实例。因此访问服务类的实例成员时不需要同步。但是,在访问其他共享资源时(例如静态属性),您将需要同步。
至于哪一个更好,它取决于你的服务类是否有每个调用实例成员。
我可以使用System.Runtime.Caching从.NET 4中,为了在与服务调用.. –
是可以共享的共享资源。但是,您必须同步对缓存中的共享资源的访问。 – Joe