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

哪些C#/ .NET依赖注入框架值得研究? 你可以说他们的复杂性和速度。


编辑 (不是作者):https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc提供了一个完整的IoC框架列表:

  • 温莎城堡 - 温莎城堡是.NET和Silverlight中最好的成熟的Inversion of Control容器
  • Unity - 轻量级可扩展依赖注入容器,支持构造函数,属性和方法调用注入
  • Autofac - 一个令人上瘾的.NET IoC容器
  • DryIoc - 简单,快速的全功能IoC容器。
  • Ninject - .NET依赖注入器的忍者
  • StructureMap - 用于.Net的原始IoC / DI容器
  • Spring.Net - Spring.NET是一个开源应用程序框架,可以使构建企业.NET应用程序变得更加简单
  • LightInject - 超轻量级IoC容器
  • 简单喷油器 - 简单喷油器是一款易于使用的.NET 4+依赖注入(DI)库,支持Silverlight 4+,Windows Phone 8,Windows 8,包括Universal apps和Mono。
  • Microsoft.Extensions.DependencyInjection - ASP.NET Core应用程序的默认IoC容器。
  • Scrutor - Microsoft.Extensions.DependencyInjection的程序集扫描扩展。
  • VS MEF - Visual Studio使用的管理可扩展性框架(MEF)实现。
  • TinyIoC - 一个易于使用,无忧无虑的小型项目,图书馆和初学者一样的控制容器的反转。
  • 原始答案如下。


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

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

    更新

    我在最近的项目中一直在使用Ninject,使用它非常愉快。 这里有些话让我失望了,但是(正如我们在英国所说)这个框架是'狗'。 我强烈建议您在任何想要快速启动并运行的绿色领域项目中使用它。 我从Justin Etheredge的一组精彩的Ninject屏幕录像中获得了我所需要的全部内容。 我看不出那种适合现有代码的Ninject是一个问题,但根据我的经验,这同样可以说是StructureMap。 在这两者之间前进将是一个艰难的选择,但我宁愿有竞争而不是停滞不前,并且在那里有相当数量的健康竞争。

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


    这取决于你在找什么,因为他们每个人都有自己的优点和缺点。

  • Spring.NET是Java世界中Spring的最成熟的版本。 Spring有一套非常丰富的框架库,可以扩展它来支持Web,Windows等。
  • Castle Windsor是.NET平台中使用最广泛的一种,拥有最大的生态系统,高度可配置性/可扩展性,具有自定义生命周期管理,AOP支持,具有固有的NHibernate支持,并且是一个非常棒的容器。 Windsor是整个堆栈的一部分,其中包括Monorail,Active Record等.NHibernate本身建立在温莎之上。
  • Structure Map通过内部DSL具有非常丰富和细致的配置。
  • Autofac是新时代的IoC容器,具有所有固有的功能编程支持。 在管理生命期方面,它也采用不同的方法。 Autofac仍然是非常新的,但它推动了IoC的可能性。
  • Ninject我听说更少的裸骨更多的是更多的方法(听说没有经历过)。
  • Unity最大的区别是:它来自微软(p&p)并得到其支持。 Unity具有非常好的性能和出色的文档。 它也是高度可配置的。 它没有所有的花色/结构地图的花里胡哨的声音。
  • 所以总而言之,这取决于你对什么很重要。 我会同意其他人去进行评估,看看哪个适合。 好的是你有一个很好的甜甜圈选择,而不是只有一个果冻。


    Autofac。 https://github.com/autofac/Autofac它真的很快很好。 这里是比较的链接(在Ninject修复内存泄漏问题之后做出的)。

    http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html

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

    上一篇: Which .NET Dependency Injection frameworks are worth looking into?

    下一篇: Difference between Inversion of Control & Dependency Injection