【问题标题】:Application Bootstrap应用程序引导
【发布时间】:2011-11-04 22:11:34
【问题描述】:

我正在阅读 StructureMap 关于依赖注入的内容,首先有两部分来初始化映射,具体类类型的接口,另一部分只是实例化(请求实例)。

第一部分需要配置,提到在引导程序中完成的设置。

引导程序的最佳做法是什么?带有静态构造函数的静态类?在 IIS 中怎么样?

另外,我如何配置结构映射,以便在不重新启动应用程序的情况下更改依赖关系?那可能吗?怎么样?

【问题讨论】:

  • IIS 怎么样? 答案完全取决于使用的框架(Web 窗体、MVC、WCF 等),而不是服务器本身。

标签: c# configuration dependency-injection structuremap


【解决方案1】:

配置在Composition Root 中完成。对 ASP.NET WebForms 的 IoC 容器支持非常糟糕。这些页面由 IIS 创建。您在这里唯一可以做的就是在页面创建后注入属性。

如果你想为网站做 DI,那么你应该使用 MVC 3 而不是 WebForms。在这种情况下,有一个集成包 Structuremap.MVC3 可以为您进行引导。你可以在 nuget 上找到它。 https://github.com/webadvanced/Structuremap-MVC3

【讨论】:

    【解决方案2】:

    使用带有静态构造函数的静态类并没有多大帮助,因为在运行代码实际使用该类之前,不会调用静态构造函数。因此,您最好的选择是在程序的 main() 方法中引导 DI。

    在 IIS 或类似环境中,通常会在加载或“启动”应用程序/加载项/组件时触发事件。在 ASP.NET(即 IIS)中,global.asax.cs 文件中的全局应用程序事件用于此目的。

    【讨论】:

    • 如果您使用自定义处理程序而不使用 gloabal.asax.cs,该怎么办?那么呢?
    • 只要您有一个 ASP.NET,至少总会调用 Application_Start 事件。见msdn.microsoft.com/en-us/library/ms178473.aspx
    • 假设我有一个 Web 客户端、一个 Windows 客户端和一个单元测试客户端。最佳实践是在每个应用程序中创建一个“IoC 配置”类来连接特定应用程序的映射?谢谢,只是想把我的头绕过去....对di来说有点新
    • @toddmo 通常是的。但是,有可能部分将在某些常见配置中在这些客户端之间共享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2017-12-28
    相关资源
    最近更新 更多