我在我的应用程序中设置了一个依赖注入容器,我认为每次WCF服务请求进来时重新组合容器会很低效。
有人可以解释一下,在一个http/IIS托管的WCF服务中,服务的生命周期是什么吗?如果我能弄清楚这个,我就可以做出明智的决策,确定容器存储、实例化、销毁等方面的问题。
我在我的应用程序中设置了一个依赖注入容器,我认为每次WCF服务请求进来时重新组合容器会很低效。
有人可以解释一下,在一个http/IIS托管的WCF服务中,服务的生命周期是什么吗?如果我能弄清楚这个,我就可以做出明智的决策,确定容器存储、实例化、销毁等方面的问题。
InstanceContextMode
为PerCall,则每个传入请求都会从头开始创建服务类,完成后就会被销毁。InstanceContextMode
为PerSession,则服务类将在整个会话期间(或直到遇到"InactivityTimeout"或发生错误)内创建并用于为一个指定的客户端提供服务。InstanceContextMode
为Single(单例),则服务类将在第一个请求到来时创建,并在请求持续到达、没有错误发生且未达到不活动超时的情况下保留在内存中。PerSession
和Single
服务)也会发挥作用,使事情要更有趣一些。正如你所提到的,你正在尝试将WCF服务实例化与依赖注入容器集成,我想说我使用Castle WCF Integration Facility做到了这一点,并且获得了非常积极的体验。
它是专门针对Castle Windsor依赖注入容器的,但由于它是开源的,你可以查看内部并理解提供的一些挑战和解决方案。