【问题标题】:Castle Windsor releasing of Transient component in WCF serviceCastle Windsor 发布 WCF 服务中的 Transient 组件
【发布时间】:2017-10-13 07:44:15
【问题描述】:

我将 Castle Windsor 与我的 WCF 服务(使用控制台应用程序托管)一起使用。

这是我的配置:

 container.AddFacility<WcfFacility>().
           Register(Component.For<IService>().
           ImplementedBy<MyService>().LifeStyle.Transient.
           AsWcfService(new DefaultServiceModel().
           AddBaseAddresses("someURI").
           AddEndpoints(WcfEndpoint.BoundTo(new BasicHttpBinding())).
           PublishMetadata(o => o.EnableHttpGet())));

我为我的服务选择了瞬态生活方式,其中一些服务依赖项也是瞬态的。据我了解,在阅读文档和一些博客后,如果您有带有生活方式 Transient 的组件,您应该负责发布它。

  1. 我应该在哪里释放我的瞬态组件?这是我的责任,还是 WcfFacility 以某种方式负责?

  2. TransientPerWcfSession 生活方式有什么区别 (顺便说一句,PerWcfSessionPerWcfOperation 之间的区别是什么?不是每个在 WCF 服务上调用的操作都有自己的会话吗?)

【问题讨论】:

    标签: castle-windsor


    【解决方案1】:
    1. 您有责任从容器中释放您直接解析的任何组件。因此,您永远不会释放您解析的组件的子依赖项。

    由于在这种情况下 wcf 服务已由设施为您解析,因此您无需发布任何内容。该设施会照顾好。

    1. 如果您注册为 PerWcfCall,每次 wcf 调用您将获得一个组件。如果您使用瞬态而不是每次您拥有该类型的子依赖项时,您将获得一个新实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多