I recently ran into a concurrency issue with WCF on a customer's
system. I'll get into the details later (though not too much detail...
NDA ;) ), but it involved some testing of the various combinations of
InstanceContextMode and ConcurrencyMode settings for a WCF service. The
table below is an attempt to clarify the results...
| InstanceContextMode | ConcurrencyMode | Resulting Behaviour |
| PerCall | Single |
|
| Multiple | Same as with ConcurrencyMode.Single | |
| PerSession | Single |
|
| Multiple |
| |
| Singlton | Single |
|
| Multiple |
|
It's
also worth noting that if you are using ServiceHost in an executable
assembly, that the Main() method not be marked with the single threaded
appartment attribute [System.STAThreadAttribute()]. This causes the
application to be single threaded, and the additional threads will not
be created regardless of the ConcurrencyMode.Multiple setting. Rather,
it should be decorated with the multi-threaded appartment attribute
[System.MTAThreadAttribute()].
本文详细探讨了WCF服务中不同实例上下文模式与并发模式的组合效果,并提供了实例上下文模式与并发模式如何影响服务行为的具体说明。此外,还讨论了在可执行程序装配中使用ServiceHost时需要注意的线程属性问题。
4577

被折叠的 条评论
为什么被折叠?



