简单的喷油器vs Hiro vs Autofac

我是DI和IoC的新手,我试图决定要学习哪个IoC容器。 我已经看到几个性能比较 ,其中三个容器引用似乎performance非常好。 但是,我没有发现包含Hiro或Simple Injector的function比较。 Autofac的社区似乎是最大的,但Hiro和简单的喷油器在基准testing中的速度非常快,特别是简单的喷油器声称非常容易学习。 也就是说,我不想学习一个,因为function集是有限的,所以不得不切换到另一个。 因为这个原因,我倾向于Autofac,因为它相当成熟,function齐全( 这里和这里都有很好的文章),也是最快的IoC容器之一。 有没有人有三个这些容器中的至less两个的经验? 你能提供任何function比较?

让我开始说我是Simple Injector的主要开发人员。

我同意马克的观点,大多数情况下,容器的性能不是问题。 尽pipe如此,一些容器在某些方面性能很差,从性能的angular度来看,很难直观地感觉到configuration的哪些部分会有问题。 大多数性能问题可以通过更改configuration(更改注册到单例,添加caching等)来解决,无论使用哪个容器。 但是,在这一点上,configuration容器可能会非常复杂。 我们试图用Simple Injector来解决这个复杂问题。 我喜欢让别人决定我们是否成功(或者是否有一个DI容器,或者另一个DI容器甚至是有用的)。

然而性能上,当我开始这个项目的时候,我的初始列表还没有那么高(简单),但是(无锁和基于Expression树的)devise让我能够进行优化,使它成为现场最快的容器之一(虽然function非常丰富,而且非常可扩展)。 在大多数情况下,您会发现性能非常接近手动新增事件。

这就是说,学习dependency injection作为一种模式还需要花费更多的时间,而不是学习如何使用特定的DI容器( Mark的书可以真正帮助两者)。 一个容器,即使简单的注入器,也不会帮助你理解DI和SOLID (但是,它的一些限制试图推动你有一个干净的应用程序devise)。

简单的注射器是相当新的(或迟到)在DI场景。 正因为如此,它和其他人之间没有太多的比较(虽然这里和这里有一些),用户数量与其他框架相比是有限的,但迅速增加(根据Roy Osherove的一个老调查 ,Simple Injector曾当时的市场份额约为4%)。 这是一个耻辱,简单的注射器不是比较了很多,因为它是很多的能力(只是看例如在文档中的高级场景部分)。 ( 第1部分和第2部分 )链接的比较中缺less简单的注射器,所以下面是简单注射器的function列表(但请注意简单注射器已添加到作者的新比较之一 ):

  • 框架 : 简单的喷油器
  • 版本 : 3.0
  • 许可证 : MIT
  • 最小dll : 1
  • 大小 :342 KB
  • stream利 :不需要,只有编程
  • 自动注册: 包括
  • 属性用法 :不包括(但可以通过扩展 )
  • XML用法不支持
  • 物业注入 : 是(selectjoin) 。
  • build设者注入 : 是的
  • 多个构造函数 :不包含,但可扩展
  • recursion依赖 :有意义的错误
  • 辛格尔顿 : 是的
  • 瞬态 : 是的
  • 其他/自定义 : 是,可插拔
  • 自定义实例 :支持
  • 开放的generics : 包括在内
  • 未注册的typesparsing : 是
  • 自动嘲笑不包括 ,但可扩展 。
  • 特殊function诊断服务 , 注册genericstypes的装饰器 ,部分开放generics, 条件/上下文注册和性能 。 有生活方式的NuGet扩展包,如Web Request和Lifetime Scoping 。 基于Expression的API允许添加对几乎任何高级场景的支持,比如拦截 (尽pipe使用装饰器被提升)。

我不知道你的要求是什么,但我敢打赌,简单的注射器可以为您的项目生命周期服务。 如果您遇到问题,请在此处询问Stackoverflow.com或简单注射器论坛 。 简单的喷油器贡献者和其他爱好者将很乐意帮助你。 不要忘记,有一堆Stackoverflow用户可以帮助你解决一般的DI问题。