【问题标题】:What is the lifecycle of an IIS-hosted (http) WCF service?IIS 托管 (http) WCF 服务的生命周期是什么?
【发布时间】:2009-06-24 12:11:46
【问题描述】:

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

有人可以向我解释一下,对于 http/IIS 托管的 WCF 服务,服务的生命周期是什么?如果我能弄清楚这一点,我就可以对容器的存储、实例化、销毁等位置做出明智的决定。

【问题讨论】:

    标签: wcf


    【解决方案1】:

    如果您的InstanceContextModePerCall,则将为每个传入请求从头开始创建服务类,然后在完成后将其处理掉。

    如果您的InstanceContextModePerSession,则将创建服务类并在会话期间(或直到遇到“InactivityTimeout”或错误)为给定客户端提供服务发生)。

    如果你的InstanceContextModeSingle(单例),服务类会在第一个请求进来的时候创建,并且只要请求不断进来就会一直留在内存中,只要没有发生错误,没有达到 inactivityTimeout。

    所以,你有它!当然,并发模式(PerSessionSingle 服务)也会发挥作用,让事情变得更“有趣”

    【讨论】:

    • 要设置它,您需要将 ServiceBehaviorAttribute 添加到您的服务类。这是我的,它与 ninject 很好地匹配:[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    【解决方案2】:

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

    它特定于 Castle Windsor 依赖注入容器,但由于它是开源的,您可以深入了解并了解所提供的一些挑战和解决方案。

    【讨论】:

      【解决方案3】:

      这取决于您的 ServiceBehavour。 特别是thisthis

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-07
        相关资源
        最近更新 更多