IoC比较

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

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

它不在您的列表中,但考虑一下Castle Windsor

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

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

其他一些不错的function:

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

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

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

public interface ISomething { ... } public class Something: ISomething { ... } 

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

我建议你选择的关键是编码以允许使用IoC – 我们在整个地方都使用接口。 这确实有助于unit testing和带来的所有好处。

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

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

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

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