.net 哪个IOC容器是最具扩展性和性能的?

.net 哪个IOC容器是最具扩展性和性能的?,.net,ioc-container,.net,Ioc Container,有许多用于.net的IOC容器,主要是MEF、Spring.net、Castle Windsor、Unity等。哪一个是最具扩展性和高性能的?在选择一个特定的IOC容器时应该考虑什么? 感谢adv对于大多数项目,IoC容器的性能不是问题,因此,除非您有非常具体的性能需求,否则选择一个容器是很糟糕的标准 MEF作为一个容器有不同的焦点。它旨在用作插件存储库(想想运行时发现),而不是传统的依赖项注入,在传统的依赖项注入中,您主要静态地知道您的组件是什么以及它们应该如何连接。这并没有使它变得更好或更糟

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


感谢adv

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

MEF作为一个容器有不同的焦点。它旨在用作插件存储库(想想运行时发现),而不是传统的依赖项注入,在传统的依赖项注入中,您主要静态地知道您的组件是什么以及它们应该如何连接。这并没有使它变得更好或更糟,它只是有一个不同的目的


有关温莎偏见的比较,请参见。

我认为阅读马克·希曼的《.NET中的依赖注入》一书是最好的方法。马克经历了好几个容器,对所有容器都很在行

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

Ninject非常易于使用,并且在Apress MVC 3手册中有介绍。Unity正变得越来越受欢迎,因为它来自微软,StructureMap非常好(并且对许多开发人员都很有利)。他们似乎表现得很好。除非某个网站受到重创的人接触到每个容器的基准测试性能,或者使用JMeter之类的工具与并发用户一起进行性能和负载测试


我不认为这些基准中的一些准确地反映了产品。如果您的公司必须使用Microsoft stack,那么您必须使用Unity(MEF在大多数情况下缺少太多功能)。如果“允许”使用第三方/开源,那么StructureMap、Ninject、Castle和Autofac是最流行的。同样,Mark关于DI的书中有一些图表,可以分解哪些是自动注册、xml配置、生命周期……这些对于应用程序来说非常重要。

如果不确切了解您的公司需要什么,就无法提出建议。但不管它值多少钱,温莎城堡都是非常棒的,并且被高度推荐。它们都非常好。如果你想要一个高质量的答案,你应该讨论你正在构建的应用程序的类型(桌面?web?),你需要的功能(可扩展性?AOP?)和你想要使用的其他框架(ASP.NET MVC?Prism?…),否则这个问题的答案就是“我使用的东西很棒”因为受访者都根据自己的需要选择了一个容器:)为了对一些最受欢迎的IOC容器进行简单的性能比较,请访问www.IOCBattle.com,作者提供了一个很好的基准:+1来解释MEF的不同用途。我看到很多关于它的错误信息。