当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《哪些.NET依赖注入框架值得研究?》经验,为你挑选了8个好方法。

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



1> RobertTheGre..:

编辑(不是作者):有一个完整的IoC框架列表,可在https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc获得:

温莎城堡 - 温莎城堡是最好的,成熟的反转控制容器可用于.NET和Silverlight

Unity - 轻量级可扩展依赖注入容器,支持构造函数,属性和方法调用注入

Autofac - 令人上瘾的.NET IoC容器

DryIoc - 简单,快速的全功能IoC容器.

Ninject - .NET依赖注入器的忍者

StructureMap - .Net的原始IoC/DI容器

Spring.Net - Spring.NET是一个开源应用程序框架,它使构建企业.NET应用程序变得更容易

LightInject - 超轻量级IoC容器

Simple Injector - Simple Injector是一个易于使用的.NET 4+依赖注入(DI)库,支持Silverlight 4 +,Windows Phone 8,Windows 8,包括Universal应用程序和Mono.

Microsoft.Extensions.DependencyInjection - ASP.NET Core应用程序的默认IoC容器.

Scrutor - Microsoft.Extensions.DependencyInjection的程序集扫描扩展.

VS MEF - Visual Studio使用的托管扩展性框架(MEF)实现.

TinyIoC - 易于使用,轻松自如,反转控制容器,适用于小型项目,图书馆和初学者.

原始答案如下.


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

话虽如此,我确信这就是你所要求的.关于IoC框架; 我以前经常使用Spring.Net和CastleWindsor,但背后真正的痛苦就是你必须写的那个讨厌的XML配置!它们现在几乎都是这样移动的,所以我在过去一年左右一直在使用StructureMap,并且由于它已经使用强类型泛型和注册表转移到流畅的配置,我使用IoC的痛苦障碍已经降到零下!现在知道我的IoC配置在编译时被检查(大部分时间),我得到了一个绝对的机会,我对StructureMap及其速度感到高兴.我不会说其他人在运行时速度很慢,但是对我来说设置起来比较困难,而且经常赢得挫败感.

更新

我一直在使用Ninject进行我的最新项目,并且使用起来非常愉快.单词在这里让我失望,但(正如我们在英国所说)这个框架是"狗".我强烈建议您在任何想要快速启动和运行的绿色领域项目中使用它.我从Justin Etheredge的一套精彩的Ninject截屏中得到了我所需要的一切.我看不出将Ninject改编成现有代码根本就是一个问题,但在我的经验中可以说StructureMap也是如此.在这两者之间展开将是一个艰难的选择,但我宁愿竞争而不是停滞不前,那里有相当数量的健康竞争.

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


不错但是要公平 - 温莎现在也有一个非常好的完全流畅的界面.

2> Glenn Block..:

这取决于你在寻找什么,因为它们各有利弊.

    Spring.NET是来自Java世界的最成熟的Spring.Spring有一组非常丰富的框架库,可以扩展它以支持Web,Windows等.

    Castle Windsor是.NET平台中使用最广泛的一个,拥有最大的生态系统,高度可配置/可扩展,具有自定义生命周期管理,AOP支持,具有固有的NHibernate支持,并且是一个非常棒的容器.Windsor是整个堆栈的一部分,包括Monorail,Active Record等.NHibernate本身建立在Windsor之上.

    Structure Map 通过内部DSL具有非常丰富和细粒度的配置.

    Autofac是一个新时代的IoC容器,具有所有固有的函数编程支持.管理生命周期的方法也不同于其他方法.Autofac仍然是非常新的,但它推动了IoC的可能性.

    Ninject 我听说有更多的方法(听说没有经历过).

    最大的鉴别因素Unity是:它来自微软(p&p).Unity具有非常好的性能和出色的文档.它也是高度可配置的.它没有说城堡/结构地图的所有花里胡哨的东西.

总而言之,它实际上取决于对您来说重要的事情.我会同意其他人一起去评估和看哪一个适合.好的是你有一个很好的甜甜圈选择,而不仅仅是一个果冻.


这是一个有趣的性能基准:http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison
Autofac实际上并不是那么新,它比Unity更旧:)
@Krzysztof - 我发现Unity很容易(至少在代码中流利配置时).你觉得什么痛苦?

3> Pete..:

Autofac. https://github.com/autofac/Autofac这真的很快,非常好.这是一个比较链接(在Ninject修复内存泄漏问题后制作).

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



4> ScottKoon..:

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

我听说很多我尊敬的人都对StructureMap和CastleWindsor说了些好话.在我看来,这些是现在看到的三巨头.



5> 小智..:

我使用Simple Injector:

Simple Injector是一个简单,灵活,快速的依赖注入库,它使用最佳实践指导您的解决方案走向成功的关键.


请注意一些人认为服务定位器是反模式的,包括使用它一段时间的人,甚至为它编写了一个库:http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/
Steven也是Simple Injector的创造者...所以这是一个垃圾回答...尤其是他使用alt帐户来做...简单的Injector虽然很快:http://www.palmmedia.德/博客/ 2011/8/30/IOC-容器基准性能对比

6> Chris Canal..:

我是Castle的忠实粉丝.我喜欢它在IoC Container故事之外提供的设施.它真的很简单,使用NHibernate,日志记录,AOP等.我也使用Binsor配置Boo并且因为它而真的爱上了Boo作为一种语言.



7> Julio César..:

我可以推荐Ninject.它非常快速且易于使用,但只有在您不需要XML配置时,否则您应该使用Windsor.


https://www.akshaysura.com/2016/08/31/ioc-container-benchmark-comparison-2016-including-microsoft-extensions-dependencyinjection/

8> 小智..:

我花了一天的时间在没有成功的情况下努力让最简单的Spring.NET示例正常工作.永远无法弄清楚如何从XML文件中找到我的程序集.另一方面,在大约2个小时内,我能够让Ninject工作,包括测试与NUnit和MSTest的集成.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有