哪个.NET依赖注入框架值得研究?

哪个C#/ .Net依赖注入框架值得研究? 你怎么能说他们的复杂性和速度。

我想我可能在这里有点挑剔,但重要的是要注意,DI(依赖注入)是一种编程模式,并且由IoC(反转控制)框架来促进,但不要求。 IoC框架只是使DI变得更加容易,它们还提供了除DI之外的其他一些优势。

话虽如此,我相信你就是这么问的。 关于IoC框架; 我过去经常使用Spring.Net和CastleWindsor ,但是后面真正的痛苦就是你必须写的所有令人讨厌的XML配置! 他们几乎都是这样移动的,所以我在去年左右一直在使用StructureMap ,而且由于它已经转移到使用强类型泛型和注册表的流畅配置,所以使用IoC的痛苦障碍已经降到零下! 现在我知道我的IoC配置是在编译时检查的(绝大部分),而且除了StructureMap及其速度之外我什么也没有, 我不会说在运行时其他人很慢,但是对于我来说,他们更难以设置,经常赢得一天的挫败感。

更新

我在最近的项目中一直在使用Ninject ,使用起来非常愉快。 这里有一些话让我失望,但是(正如我们在英国所说的)这个框架是“狗”。 我强烈建议您在任何想要快速启动并运行的绿色领域项目中使用。 我从Justin Etheredge的一组精彩的Ninject屏幕录像中获得了所有我需要的东西。 我看不出现在的代码已经成为一个问题了,但是根据我的经验,也可以这么说。 在这两者之间前进将是一个艰难的选择,但我宁愿有竞争而不是停滞不前,而且还有一个健康的竞争。

其他IoC截屏也可以在Dimecast上找到 。

这取决于你在找什么,因为他们各有利弊。

  1. Spring.NET是Java世界中Spring的最成熟的版本。 Spring有一套非常丰富的框架库,可以扩展它来支持Web,Windows等等。
  2. Castle Windsor是.NET平台中使用最广泛的一个,拥有最大的生态系统,高度可配置性/可扩展性,具有自定义生命周期管理,AOP支持,具有固有的NHibernate支持,并且是一个非常棒的容器。 Windsor是包括Monorail,Active Record等在内的整个栈的一部分。NHibernate本身就是在Windsor的基础上构建的。
  3. Structure Map通过内部DSL具有非常丰富和细致的配置。
  4. Autofac是新时代的IoC容器,具有所有固有的功能编程支持。 在管理生命周期方面,它也采用不同的方法。 Autofac仍然是非常新的,但它推动了IoC的可能性。
  5. Ninject我听说更多的是用更少的方法(听说没有经验)的裸骨。
  6. Unity最大的区别是:它是由微软(p&p)提供支持的。 Unity具有非常好的性能和很好的文档。 它也是高度可配置的。 它并没有所有的城堡/结构地图的花里胡哨。

所以总的来说,这取决于什么对你很重要。 我会同意其他人去做和评估,看看哪一个适合。 好的是你有一个很好的甜甜圈选择,而不是只有一个果冻。

Ninject很棒。 看起来确实很快,但我没有做任何比较。 我知道作者Nate在Ninject和其他DI框架之间做了一些比较,并且正在寻找更多的方法来提高Ninject的速度。

我听到很多我尊重的人对StructureMap和CastleWindsor说好话。 在我看来,这是目前三大看点。

我使用简单的注射器 :

简单的注射器是一个简单,灵活和快速的依赖注射库,使用最佳实践来指导你的解决方案走向成功的坑。

我是Castle的忠实粉丝。 我喜欢超出IoC容器故事提供的设施。 它真的简化了使用NHibernate,日志记录,AOP等。我也使用Binsor配置与Boo,并真正爱上了Boo作为一种语言,因为它。

我可以推荐Ninject。 这是非常快速和易于使用,但只有当你不需要XML配置,否则你应该使用温莎。

我过去使用过Spring.NET ,并且取得了巨大的成功。 我从来没有注意到它有任何实质性的开销,尽管我们使用它的这个项目本身是相当重的。 它只花了一点时间阅读文档来建立它。

为了获得最简单的Spring.NET示例,我花了一天时间挣扎而没有成功。 永远不知道如何让它从XML文件中找到我的程序集。 另一方面,在2个小时左右,我就能够使Ninject正常工作,包括测试与NUnit和MSTest的整合。

关于C#的伟大之处在于,它正沿着多年前的Java开发者殴打的道路前进。 所以,我的建议,一般来说,在寻找这种性质的工具时,是寻找可靠的Java答案,看看是否还有.NET适应。

所以当谈到DI(而且那里有太多的选择,这真是一个有趣的问题)是Spring.NET 。 另外,研究项目背后的人总是明智的。 我没有建议SourceGear产品的源代码控制(除了使用它们),因为我尊重Eric Sink。 我已经看到马克·波拉克说话了,我能说什么呢,这个人就是知道的。

最后,有很多DI框架,最好的办法就是做一些样本项目,并做一些有意义的选择。

祝你好运!

我认为Ninject是一个很好的起点,它是新的,并考虑到了很多微调,而且速度非常快。 内特,开发人员,真的有一个伟大的网站和很大的支持。

Spring.Net是相当稳固的,但是文档花了一些时间来浏览。 Autofac是好的,虽然支持.Net 2.0,但你需要VS 2008编译它,否则使用命令行来构建你的应用程序。