【问题标题】:What dependency Injection Framework with WebForms什么依赖注入框架与 WebForms
【发布时间】:2011-05-16 13:51:28
【问题描述】:

我一直在研究学习依赖注入(我想我现在已经掌握了基础知识)并希望将其实现到 webform 应用程序中。

我的问题是,我应该为 webforms 项目使用什么依赖注入框架,或者是什么最适合你的问题?

我目前看过 Spring.Net、Ninject、Unity 和 StructureMap,我倾向于在配置方面没有偏好,无论是 XML 还是流畅的接口。然而,XML 配置是否变得不那么受欢迎了?

我遇到的大部分信息都与在 MVC 环境中的依赖注入有关。并且还阅读了一些框架,例如 Structure Map only work with webforms using version 2.0 or earlier. 所以我需要考虑的事情是 webforms 是否会得到持续支持,以及对于模式相对较新的人来说是否易于配置。

提前谢谢你。

【问题讨论】:

    标签: c# asp.net dependency-injection webforms


    【解决方案1】:

    你选择哪个框架并不重要,唯一的技巧是允许像你的System.Web.UI.Page类这样的类被注入它们的依赖项。当您查看 ASP.NET MVC 时,您会发现他们专门设计了它以与依赖注入框架配合使用。 ASP.NET WebForms 显然不是为此而设计的。一些框架确实支持开箱即用的 WebForms,但对于所有其他框架来说,做到这一点并不难。

    在 WebForms 应用程序中,为您创建页面的“事物”是PageHandlerFactory。你必须做的是重写PageHandlerFactory基类,在这个类型中实现一些注入行为,并在web.config中注册这个新类型:

    <?xml version="1.0"?>
    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.aspx"
            type="MyPageHandlerFactory, MyAsm"/>
        </httpHandlers>
      </system.web>
      <system.webServer>
        <handlers>
          <add name="CSLPageHandler" verb="*" path="*.aspx"
            type="MyPageHandlerFactory, MyAsm"/>
        </handlers>
      </system.webServer>
    </configuration>
    

    我已经写了an article,介绍了如何创建PageHandlerFactory 以与Common Service Locator 一起使用,但您可以选择自己喜欢的IoC 框架,只需更改一行代码即可使其正常工作。

    祝你好运。

    【讨论】:

    • 感谢您的洞察力。由于它的附加功能,决定使用 spring.net。
    • Spring.net 是我最不喜欢的容器。您特别需要 spring 提供的哪些功能?
    • 特别是双向数据绑定和休眠支持。
    猜你喜欢
    • 2012-02-15
    • 2014-09-06
    • 2017-08-31
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多