一个托管在IIS上的(http)WCF服务的生命周期是什么?

13

我在我的应用程序中设置了一个依赖注入容器,我认为每次WCF服务请求进来时重新组合容器会很低效。

有人可以解释一下,在一个http/IIS托管的WCF服务中,服务的生命周期是什么吗?如果我能弄清楚这个,我就可以做出明智的决策,确定容器存储、实例化、销毁等方面的问题。

3个回答

24
如果您的InstanceContextModePerCall,则每个传入请求都会从头开始创建服务类,完成后就会被销毁。
如果您的InstanceContextModePerSession,则服务类将在整个会话期间(或直到遇到"InactivityTimeout"或发生错误)内创建并用于为一个指定的客户端提供服务。
如果您的InstanceContextModeSingle(单例),则服务类将在第一个请求到来时创建,并在请求持续到达、没有错误发生且未达到不活动超时的情况下保留在内存中。
因此,以上是解释!当然,并发模式(对于PerSessionSingle服务)也会发挥作用,使事情要更有趣一些。

2
要设置这个,您需要在您的服务类中添加ServiceBehaviorAttribute属性。以下是我使用Ninject匹配的代码示例:[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] - Twisted

1

正如你所提到的,你正在尝试将WCF服务实例化与依赖注入容器集成,我想说我使用Castle WCF Integration Facility做到了这一点,并且获得了非常积极的体验。

它是专门针对Castle Windsor依赖注入容器的,但由于它是开源的,你可以查看内部并理解提供的一些挑战和解决方案。


0

这取决于您的ServiceBehavour。 具体来说是thisthis


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接