【发布时间】:2012-01-01 14:57:28
【问题描述】:
我是 DI 和 IoC 的新手,我正在尝试决定学习哪个 IoC 容器。我见过几个performance comparisons,其中引用的三个容器似乎表现得非常好。但是,我没有发现包含 Hiro 或 Simple Injector 的功能比较。 Autofac 的社区似乎是最大的,但 Hiro 和 Simple Injector 在基准测试中的速度非常快,特别是 Simple Injector 声称非常容易学习。也就是说,我不想学习一个并且不得不切换到另一个,因为功能集是有限的。出于这个原因,我倾向于 Autofac,因为它相当成熟且功能完整(好文章 here 和 here),并且是可用的最快的 IoC 容器之一。有没有人使用过这三个容器中的至少两个?你能提供任何功能比较吗?
【问题讨论】:
-
DI Containers 的性能在很大程度上无关紧要。除非您开发的应用程序与在 .NET 上编写的 99% 的应用程序大不相同,否则您的性能瓶颈将在其他地方 (I/O)。功能比较可以在这里找到:stackoverflow.com/questions/4581791/…
-
我不知道您对“始终如一的好东西”的定义是什么,但我个人最喜欢 StructureMap 因为它的实用主义,它内置了一些其他人没有的好东西,但事实并非如此臃肿,而且速度非常快。 Ninject 很好,因为它具有出色的插件/nuget 支持。正如@Mark Seemann 所说,性能是判断容器的错误方法。
-
@MarkSeemann 在问这个问题之前我已经发现了这个问题。我认为您的比较图表很棒,但是缺少 Hiro 和 Simple Injector。正如我在这个问题中所说,很难找到包含 Hiro 和/或 Simple Injector 的功能比较,您引用的问题也不例外。针对该问题发布的唯一比较是基准测试,而不是功能。考虑到你写了一本书,你似乎对这个主题非常精通。需要详细说明吗?
-
@Brook 虽然我想了解人们对他们最喜欢的 IoC 容器是什么的看法,但这不是 SO 的格式,也不是我问的问题。如果我问这个问题已经结束了。我只想对我在标题中提到的三个容器的功能进行比较,这些容器来自至少使用过两个容器的个人。这使我保持在本网站上定义为好问题的范围内;)
-
上次看 Hiro 时,我的印象是,它主要是一个概念证明,证明你可以制作一个与
newing 一样快的合成引擎手。除了非常快之外,它几乎没有“功能”。关于Simple Injector,我没有意见……
标签: .net dependency-injection inversion-of-control autofac simple-injector