Ninject很棒。看起来真的很快,但我没有做过任何比较。我知道作者Nate在Ninject和其他DI框架之间做了一些比较,并且正在寻找更多的方法来提高Ninject的速度。
我听很多我尊敬的人说过StructureMap和CastleWindsor的优点。在我看来,这是目前最值得关注的三大问题。
我在过去使用过春天。网,并取得了巨大的成功。我从未注意到它有任何实质性的开销,尽管我们使用它的项目本身相当繁重。它只花了一点时间读取文档来设置它。
c#的伟大之处在于,它遵循了多年来Java开发人员所走过的道路。所以,我的建议是,一般来说,在寻找这种性质的工具时,寻找可靠的Java答案,看看是否存在。net的改编。
所以当涉及到DI时(有很多选项,这真的是一个品味的问题)是春天。网。此外,研究项目背后的人总是明智的。我建议使用SourceGear产品进行源代码控制(在使用它们之外),因为我尊重Eric Sink。我看过马克·波拉克的演讲,我能说什么呢,他就是懂。
最后,有很多依赖注入框架,您最好的选择是使用其中的一些做一些示例项目,并做出明智的选择。
好运!
编辑(不是作者提供的):在https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc中有一个IoC框架的全面列表:
以下是原来的答案。
我想我在这里可能有点挑剔,但重要的是要注意DI(依赖注入)是一种编程模式,它由IoC(控制反转)框架促进,但并不需要。IoC框架只是让DI变得更容易,而且它们提供了许多其他优于DI的好处。
话虽如此,我相信这就是你想问的。关于IoC框架;我过去经常使用春天。网和CastleWindsor,但真正的麻烦是你必须编写的所有讨厌的XML配置!它们现在几乎都在朝着这个方向发展,所以我在过去的一年左右一直在使用StructureMap,并且由于它已经转移到使用强类型泛型和注册表的流畅配置,我在使用IoC时的痛苦障碍已经降到了零以下!现在我知道我的IoC配置是在编译时检查的(大部分),我对StructureMap和它的速度除了快乐什么都没有。我不会说其他的在运行时很慢,但是它们的设置对我来说更加困难,而且经常让人沮丧。
更新
我一直在我的最新项目中使用Ninject,使用它是一种绝对的乐趣。我在这里有点不知道该怎么说,但是(就像我们在英国说的)这个框架就是“狗”。我强烈推荐它用于任何你想要快速启动和运行的绿地项目。我得到了所有我需要的奇妙的Ninject截屏集由Justin Etheredge。我看不出将Ninject重新安装到现有代码中是一个问题,但根据我的经验,StructureMap也存在同样的问题。这将是一个艰难的选择,但我宁愿有竞争,而不是停滞不前,那里有相当数量的健康竞争。
其他IoC截屏也可以在这里是Dimecasts中找到。
Autofac。https://github.com/autofac/Autofac它真的很快,很好。这里有一个比较链接(在Ninject修复内存泄漏问题后)。
http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html
我认为Ninject是一个很好的开始,它是新的,已经考虑了很多微调,而且非常快。Nate,开发人员,真的有一个很好的网站和很好的支持。
我可以推荐Ninject。它非常快速且易于使用,但仅当您不需要XML配置时,否则您应该使用Windsor。
我是卡塞尔的超级粉丝。我喜欢它提供的IoC容器之外的功能。它真的简化了使用NHibernate,日志,AOP等。我还使用Binsor来配置Boo,并因此真正爱上了Boo这门语言。
春天。Net是非常可靠的,但是文档花了一些时间。Autofac很好,虽然支持。net 2.0,但你需要VS 2008来编译它,或者使用命令行来构建你的应用程序。
这取决于你在寻找什么,因为它们都有各自的优点和缺点。
Spring.NET
Castle Windsor
Structure Map
Autofac
Ninject
Unity
总之,这取决于什么对你来说是重要的。我同意其他人的看法,去评估,看看哪一个合适。好处是你有很多甜甜圈可以选择,而不仅仅是果冻甜甜圈。
我使用简单的注射器:
Simple Injector是一个简单、灵活、快速的依赖注入库,它使用最佳实践指导您的解决方案走向成功。
我花了大半天的时间苦苦挣扎,只为得到最简单的泉水。NET实例工作。永远不知道如何让它从XML文件中找到我的程序集。另一方面,在大约2小时内,我能够让Ninject工作,包括测试与NUnit和MSTest的集成。