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

冒着进入圣战领域的风险,这些流行的DI / IoC框架的优点和弱点是什么?可以轻易认为是最好的吗? ..:

  • Ninject
  • 统一
  • Castle.Windsor
  • Autofac
  • StructureMap
  • 是否还有其他针对C#的DI / IoC框架,我没有在这里列出?

    在我的使用案例中,我构建了一个客户端WPF应用程序和一个WCF / SQL服务基础架构,易用性(特别是语法清晰简洁),一致的文档,良好的社区支持和性能都是重要的因素在我的选择。

    更新:

    所引用的资源和重复问题似乎已经过时,能否了解所有这些框架的知识并提供一些真正的见解?

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

    如果以前没有做过,我很乐意进行自己的调查,但我认为这是至少有几个人已经做过的事情。

    第二次更新:

    如果您对多个DI / IoC容器有经验,请对这些容器的优缺点进行排序和总结,谢谢。 这不是发现人们所做的所有晦涩难懂的小容器的练习,我正在寻找流行(和主动)框架之间的比较。


    虽然这个问题的综合答案占用了我的书的数百页,但下面是我仍在研究的快速比较图表:

    解释几个DIC之间差异的表格


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

  • AutoFac
  • LightCore(网站是德语)
  • 李林甫
  • Ninject
  • 娇小
  • 简单的喷油器(所有参赛者中速度最快)
  • Spring.NET
  • StructureMap
  • 统一
  • 温莎
  • 以下是帖子的简要总结:

    结论

    Ninject绝对是最慢的容器。

    MEF,LinFu和Spring.NET比Ninject更快,但仍然很慢。 紧随其后的是AutoFac,Catel和Windsor,其次是StructureMap,Unity和LightCore。 Spring.NET的缺点是,只能用XML配置。

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

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

    您还可以尝试使用通用服务选择器库,并希望尝试多个选项,并查看哪些最适合您。

    有关来自站点的通用服务选择器库的一些通知:

    该库提供了对IoC容器和服务定位器的抽象。 使用库允许应用程序间接访问这些功能而不依赖于硬引用。 希望通过使用这个库,第三方应用程序和框架可以开始利用IoC /服务位置,而不必将自己归结为特定的实现。

    更新

    2011年9月13日 Funq和Munq被加入参赛名单。 图表也进行了更新,Spring.NET由于性能不佳而被删除。

    2011年11月4日: “添加简单注射器,表现是所有参赛者中最好的”。


    请阅读Philip Mat撰写的这个伟大的.Net DI容器比较博客。

    他做了一些彻底的性能比较测试;

  • Autofac
  • StructureMap
  • Ninject
  • 统一
  • Castle.Windsor
  • Spring.Net
  • 他建议使用Autofac,因为它体积小,速度快,易于使用......我同意。 看来Unity和Ninject是他测试中速度最慢的。

    链接地址: http://www.djcxy.com/p/82105.html

    上一篇: How do the major C# DI/IoC frameworks compare?

    下一篇: ASP.NET Core MVC Dependency Injection via method