gpt4 book ai didi

wcf - 通过 WCF 简化 IOC 容器的使用

转载 作者:行者123 更新时间:2023-12-02 05:32:36 25 4
gpt4 key购买 nike

articlearticle 之后在 article 之后,任何关于将 IOC 容器(Unity、Windsor 等)与 IIS 一起使用的讨论都涉及创建自定义 ServiceHostFactory 和自定义 ServiceHost。

我能看到的唯一原因是,具有 IInstanceProvider 相关负载的自定义服务行为可以应用于所有服务。所以我试图理解为什么没有通过 anonymous service configuration 来简化整个事件。 .这种配置将允许将自定义行为应用于所有服务,而无需使用自定义 ServiceHostFactory 和自定义服务主机。

也就是说,我可以想象自定义服务主机是必要的唯一原因是自定义 IInstanceProvider 是否与每个 WCF 实例或上下文实例一起回收。当然,我希望每次启动 IIS ServiceHost 时只建立一次 IOC 容器绑定(bind),而不是重复或不定期地建立。

如果我的自定义 IInstanceProvider 确实偶尔被回收,那么我可以将我的 IOC 容器放入自定义服务主机中 - 以确保它会尽可能长时间地存在。

但同样,如果我的自定义 IInstanceProvider 将与内置服务主机一样长,那么为什么不跳过自定义服务主机工厂和自定义服务主机呢?

事实上,更进一步,如果我将我的 IOC 容器放入我的自定义 IInstanceProvider 的静态成员中,那么 IInstanceProvider 是否被不规则地回收并不重要。这是一个完整的循环:为什么我需要或想要自定义 ServiceHostFactory 和自定义 ServiceHost 以将 IOC 容器与 WCF 一起使用?

最佳答案

嗯。这是因为大多数 IoC/WCF 集成(如 mine)所做的不仅仅是创建您的服务(及其依赖项)。

自定义生命周期/处置

当请求结束时,一切都应该得到正确的清理。您的服务和 IoC 类使用不同的生命周期。

仅借助 InstanceProvider 无法检测到请求的结束。

IContractBehavior/IServiceBehavior

您可以在容器中注册行为并且automatically将它们添加到您的 WCF 服务中。

关于wcf - 通过 WCF 简化 IOC 容器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com