开发 ASP.NET Web 应用程序项目时要考虑哪种 IoC,不同 IoC 的优势是什么?
- 对象构建器
- 统一
- 春天.NET
我们在 ASP.NET MVC 项目中使用StructureMap并发现它非常有用。唯一真正的缺点是文档有限。自动装配非常好,如果您使用强约定来命名您的类和接口,它只需要很少的配置,例如:
public interface ISomething { ... }
public class Something: ISomething { ... }
在此之前,我们使用 Spring.NET,尽管我们放弃了它,因为它做了很多我们并不真正需要的其他(非 IoC)事情,并且需要复杂的 XML 配置来完成我们需要的事情。作为一个 IoC 容器,它运行良好并且非常灵活。
无论你选择什么,我推荐的关键是允许使用 IoC 的编码——我们在所有地方都使用接口。这确实有助于单元测试以及带来的所有好处。
MVC3 中的 Unity 东西看起来也很有趣,但还没有机会玩弄它。
我怀疑很多人使用过其中的两个或三个以上,而根据我对 Unity 和 Ninject 的有限经验,最终结果并没有太大差异。它们用于配置映射的选项略有不同,我确信一些更高级的功能有所不同,但这些可能很少使用。归根结底,IoC 容器的核心要求并没有那么复杂——你可以很容易地自己动手。
更重要的是您使用的是 IoC 模式,您选择的特定品牌可能对最终应用程序的质量没有显着影响。
对于它的价值,我会推荐 Ninject,因为它非常轻量级。