哪个IOC容器最具扩展性和性能?

时间:2010-06-19 20:53:17

标签: .net ioc-container

.net有很多IOC容器,主要有MEF,Spring.net,Castle Windsor,Unity等。哪个是最具扩展性和高性能的?选择特定的IOC容器时应该考虑什么?

先谢谢

2 个答案:

答案 0 :(得分:1)

对于大多数项目而言,IoC容器的性能不是问题,因此除非您有非常具体的性能需求,否则选择一个而不是另一个是不好的标准。

MEF作为容器有不同的侧重点。它旨在用作插件存储库(想想运行时发现),而不是传统的依赖注入,在这种情况下,您通常知道静态您的组件是什么以及它们应该如何连接。这不会使它变得更好或更糟,它只是有不同的目的。

对于有点温莎偏见的比较,请参阅my answer to this similar question

答案 1 :(得分:1)

我认为阅读Mark Seemann撰写的“.NET中的依赖注入”一书是最好的方法。 Mark经历了几个容器并且非常擅长所有这些容器。 http://www.amazon.com/Dependency-Injection-NET-Mark-Seemann/dp/1935182501/ref=sr_1_1?ie=UTF8&qid=1326500032&sr=8-1

我认为IOCBattle.com并没有告诉别人有关现实世界的使用和最佳实践来排除Ninject和Castle,因为根据MartinF的结果,他们的速度要慢得多,MartinF是一个鲜为人知的IOC容器的作者。

Ninject非常易于使用,并且在Apress MVC 3书中。 Unity正在变得越来越流行,因为它来自微软,而且StructureMap相当不错(并且对许多开发人员有利)。他们似乎表现得相当不错。除非有重型网站的人在每个容器上都有基准标记性能,或者使用像JMeter这样的工具对并发用户进行了性能和负载测试。

我认为其中一些基准测试不能准确反映产品。如果您的公司必须使用Microsoft堆栈,那么您必须使用Unity(MEF在大多数情况下缺少太多功能)。如果您“被允许”使用第三方/开源,则StructureMap,Ninject,Castle和Autofac是最受欢迎的。再一次,Mark关于DI的书有图表可以分解那些具有自动注册,xml配置,生命周期......的图表,这些内容对于应用程序来说非常重要。