ASP.NET MVC推荐使用哪个依赖注入框架?

9

我一直在寻找适用于ASP.NET MVC的良好依赖注入技术。最近我是Java EE程序员,我总是使用Spring作为DI框架。但是在互联网上搜索了一些教程后,我发现Spring.NET需要为每个需要注入的控制器进行显式的XML配置。

<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects xmlns="http://www.springframework.net">

        <object id="HomeController" type="SpringTestApplication.Controllers.HomeController, SpringTestApplication" singleton="false">
            <property name="TestProperty" value="This has been injected via Spring.Net"/>
        </object>

    </objects>   
</spring>

我认为这很复杂,因为像Java世界中的Spring那样,没有自动装配的功能。 你能为ASP.NET MVC推荐推荐DI框架吗?

提前感谢。


我目前的MVC 3项目正在使用Unity。它运行得非常好。Autofac在我的以前的项目中也表现良好。这两个DI框架都可以直接与ASP.NET MVC一起使用。 - Allen Wang
1
推荐者是谁?目前没有官方推荐的 DI 框架,每个人都有自己喜欢的。 - hwiechers
5个回答

7

我不会说在ASP.NET MVC框架中有任何推荐的依赖注入(DI)框架,但是在.NET世界中有许多流行的DI框架,例如:Castle WindsorAutofacStructureMapNinjectUnitySprint.NET 等等。

我强烈推荐使用 Ninject。你可以在 github 上找到源代码。对于 ASP.NET MVC 框架的各个版本也有Ninject扩展。该项目还包含一个示例应用程序。

如果你想看一下使用Ninject的应用程序,我建议看看博客引擎Subtext

我也想建议你看一下Mark Seemann的书:Dependency Injection in .NET。它涵盖了.NET的一些主要框架,但很遗憾它没有涵盖Ninject。


4

Castle Windsor、Ninject、Autofac都是很好的选择。

个人现在使用的是Castle。

关于如何设置这些东西的很好的例子,请参见http://wiki.sharparchitecture.net/


3

我曾经在MVC中使用过UnityCastle Windsor,两者都很好,都提供XML或流畅的API配置。


2
我认为没有“首选”框架。正如其他答案所示,您有多个选择,其中之一是spring.net。
关于spring.net:
  • 有一个CodeConfig项目,您可能会喜欢
  • 使用xml配置的Visual Studio支持已经有所改进,vs.net add-in和ReSharper也有所帮助
  • asp.net mvc 2在版本1.3.1(当前版本)中得到支持out-of-the-box
  • asp.net mvc 3将在即将发布的版本1.3.2中得到支持out-of-the-box
如果您想通过使用spring.net利用您的Spring Java技能,您可能需要考虑以上内容。

1

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