IoC比较

时间:2010-12-22 13:05:27

标签: c# .net asp.net ioc-container wcsf

在开发ASP.NET Web应用程序项目时要考虑哪个IoC以及不同IoC的优势是什么?

  1. ObjectBuilder的
  2. 统一
  3. Spring.NET

3 个答案:

答案 0 :(得分:3)

它不在您的列表中,但请考虑查看Castle Windsor

支持工厂的设施数量,以便工厂产品注入工厂本身或注入代理或创建具有依赖关系的主机的Wcf工具。

有一个很好的流畅界面可以连接单个项目,但最好是使用约定来自动连接,这样就不必列出每个组件。

其他一些不错的功能:

  • 自新版本以来需要一个dll。
  • 支持通过SubDependancy解析器注入列表和数组

Here是今年进行的民意调查,展示了受欢迎的IoC。 Unity似乎是顶级的,但这可能是因为它是微软的产品,微软研讨会默认会选择它。

答案 1 :(得分:2)

我们在ASP.NET MVC项目中使用StructureMap并发现它非常有用。唯一真正的缺点是有限的文件。自动布线非常有效,如果使用强约定来命名类和接口,则需要很少的配置,例如:

 public interface ISomething { ... }

 public class Something: ISomething { ... }

在此之前我们使用了Spring.NET,虽然我们放弃了它,因为它执行了很多其他(非IoC)我们并不真正需要的东西,并且需要复杂的XML配置来完成我们需要的工作。作为IoC容器,它工作得很好,而且非常灵活。

我建议您选择的关键是编码以允许使用IoC - 我们在整个地方都使用接口。这确实有助于单元测试以及带来的所有好处。

MVC3中的Unity内容确实看起来很有趣,但还没有机会玩它。

答案 2 :(得分:1)

我怀疑很多人已经使用了超过两三个,而且在Unity和Ninject的经验非常有限的情况下,最终结果并没有那么大的差别。他们有略微不同的配置映射的选项,我确信一些更高级的功能有所不同,但这些可能很少使用。在一天结束时,IoC容器的核心要求并不复杂 - 您可以很容易地自己动手。

更重要的是,您使用的是IoC模式,您选择的特定品牌可能对最终应用程序的质量没有显着影响。

对于它的价值,我推荐Ninject只是因为它非常轻便。