CSharp - 如何比较主要的C# DI/IoC框架?

  显示原文与译文双语对照的内容
0 0

冒着危险走进神圣的战争领土,有哪些长处和短处这些受欢迎的迪/ioc框架和可以一个人很容易被认为是最好? ?

  • Ninject
  • Unity
  • Castle.Windsor
  • Autofac
  • StructureMap

我还没有在这里列出的C#/ioc框架?

在我的用例中,我正在构建一个客户端WPF应用程序和一个 wcf/sql服务基础架构,易于使用的( 尤其是在简明简明的语法方面),良好的社区支持和性能,都是我选择的重要因素。

更新:

引用的资源和重复的问题似乎过时了,可以了解所有这些框架的人,并提供一些真正的洞察力?

我意识到关于这个主题的大多数观点可能有偏见,但我希望有人花时间来研究所有这些框架,并且至少有一个客观的比较。

我很愿意做我自己的调查,如果这还没有完成,但我假设这至少是一些人已经完成了。

第二个更新:

如果你有多个 di/ioc容器的经验,请分级并总结这些容器的优缺点,谢谢。 这不是在发现人们所做的所有晦涩的小容器,我正在寻找流行的( 和活动的) 框架之间的比较。

时间:原作者:11个回答

0 0

尽管对这个问题的全面回答占用了页的我的图书,这里是一个快速比较图表,我还在处理:

alt text

原作者:
0 0

我遇到了另一个性能比较 ( 最新更新 10 2014年04月 ) 。 它比较以下内容:

下面是帖子的简短摘要:

结束语

Ninject绝对是最慢的容器。

MEF,LinFu和 Spring.NET 比Ninject快,但仍然很慢。 AutoFac,Catel和 Windsor,接下来是 StructureMap,Unity和 LightCore 。 Spring.NET的一个缺点是,只能用XML进行配置。

SimpleInjector,Hiro,Funq,Munq和Dynamo提供最佳的性能,它们非常快。 给他们一个尝试 !

特别是简单的注射器似乎是一个不错的选择。 它非常快,具有良好的文档,也支持高级场景,比如拦截和通用装饰。

你也可以尝试使用公共服务选择器库,并希望尝试多个选项并查看哪些选项最适合你。

站点中关于公共服务选择器库的一些 informtion:

这个库提供了IoC容器和服务定位器的抽象。 使用该库允许应用程序间接访问功能而不依赖于硬引用。 希望在使用此库时,第三方应用程序和框架可以开始利用 ioc/服务位置,而不用将自己束缚到特定的实现中。

更新

13.09.2011:FunqMunq 被添加到 List的竞争者。 图表也被更新,Spring.NET 由于性能不佳而被删除。

04.11.2011:"添加简单喷油器,性能是所有参赛者的最佳选择"。

原作者:
0 0

刚刚阅读了这个伟大的.Net DI容器比较博客 。Mat 。

他做了一些全面的性能对比测试;

他推荐 Autofac,因为它小巧,快速且易于使用。 我同意。似乎 UnityNinject是他测试中最慢的。

原作者:
0 0

实际上有大量的IoC框架。 似乎每个程序员都想在他们职业生涯的某一点写一个。 也许不是发布它,而是学习内部工作。

我个人喜欢 autofac,因为它非常灵活而且有适合我的语法。

其他框架:

原作者:
0 0

上看到的比较 net-ioc-frameworks Google Code 包括LinFu和 spring.net 不 List 当我写这段文字。

我使用 spring.net: 它有许多特性( aop,库,文档,。。),在dotnet和java-world中有很多经验。 这些特性是模块化的,所以你不必采用所有的特性。 这些特性是常见问题的抽象,比如 databaseabstraction,loggingabstraction 。 然而,它是difficuilt执行和调试 IoC-configuration 。

从我目前阅读的内容来看: 如果我必须为一个小型或者中型项目 chooseh,我将使用 ninject,因为ioc-configuration已经完成并在 C# 中调试。 但我还没有处理它。 对于大型模块系统,我将与 spring.net 一起,因为 abstraction-libraries 。

原作者:
0 0

好吧,在查看了目前最好的比较之后,我发现:

这是在 2010年03月 中进行的投票。

我感兴趣的一点是那些使用了 di/ioc框架并且喜欢/不喜欢的人,StructureMap似乎在上面出现了。

在民意测验中,似乎 Castle.WindsorStructureMap似乎是最受欢迎的。

有趣的是,UnitySpring.Net 似乎是最常用的选项。 ( 我正在考虑从懒惰的( 和微软徽章/支持) 中解脱出来,但我现在将更接近于 Windsor 和 StructureMap 。)

当然这可能() 不适用于统一 2.0 2010年05月 释放。

希望其他人可以提供基于直接体验的比较。

原作者:
...