使用哪个依赖注入框架来配合WebForms?

8
我一直在学习依赖注入(我想我已经掌握了基础知识),并希望将其实现到一个Web表单应用程序中。我的问题是,对于WebForms项目,我应该使用哪个依赖注入框架,还是说这取决于哪个最适合您?
我目前看过Spring.Net、Ninject、Unity和StructureMap,我倾向于不关心配置方式,无论是XML还是流畅的接口。然而,XML配置是否变得不那么受欢迎了?
我找到的大多数信息都涉及在MVC环境中使用依赖注入。我还读到一些框架只支持WebForms 2.0或更早版本,例如Structure Map。因此,我需要考虑的事情是WebForms是否会持续得到支持,以及对于相对新手来说配置的容易程度。
提前感谢您的回答。
1个回答

11
无论你选择哪个框架,唯一的技巧就是允许类(例如你的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>

我写了一篇文章,介绍如何创建一个PageHandlerFactoryCommon Service Locator配合使用,但你可以选择自己喜欢的IoC框架,并更改一行代码即可使其工作。

祝好运。


感谢您的见解。由于它具有额外的功能,我决定选择Spring.net。 - gdp
1
Spring.net 是我最不喜欢的容器。您需要 Spring 提供的哪些特定功能呢? - jonnii
具体来说,双向数据绑定和NHibernate支持。 - gdp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接