Ninject VS统一为DI(闭合)
-
20-08-2019 - |
题
我们使用ASP.net MVC。
哪一个是最好的DI框架Ninject或Unity为什么?
解决方案
我最后一次看着它们中的我发现Ninject略胜一筹。但两者都具有它们的缺点。
Ninject具有更好的流利的配置方案。团结似乎主要依赖于XML配置。 Ninject的主要缺点是,它需要你到处引用Ninject.Core在你的代码中加入[进样]属性。
如果我会问,你为什么要限制你的选择,这两个?我认为Castle.Windsor,Autofac和StructureMap至少一样好或更好。
其他提示
我知道这是一个老问题,但这里是我的想法:
我个人喜欢Ninject。我喜欢流畅的接口,避免XML的。我一般喜欢XML,只是不适合这种配置的东西。尤其重构涉及当流利接口使其更容易纠正。
我错过StructureMap的ObjectFactory的,但也有容易的解决方法将它添加到Ninject。
由于杰弗里指出,不必使用[进样]属性,当你只有一个构造函数。
我发现我更喜欢流畅的界面不仅是因为他们避免XML,而是因为它们会导致当我改变的东西,影响到他们的编译时错误。 XML配置不和的少我要的记住的改变更好的我。
Ninject检测循环依赖。
我同意Mendelt,没有“最好的” DI框架。这只是取决于局势,他们都各有利弊。认为大卫·海登DOTNET的岩石团结是首选,如果你使用的EntLib的休息和熟悉该说。我个人使用统一,因为我的客户喜欢,它说的微软的DLL文件企业库(统一),如果你得到了什么I'm说。
的事实我同时使用两个XML配置用于建立的接口和它们的具体实施方案,而是然后在我代码注入时使用的属性,如:
<type type="ILogger" mapTo="EntLibLogger">
<lifetime type="singleton"/>
</type>
和在代码:
[InjectionConstructor]
public Repository([Dependency] ILogger logger)
我个人认为这使得它更清楚发生了什么,但当然有人会说,你将不得不在你的应用程序的统一引用。程式时,你。
http://www.palmmedia.de/blog/2011 / 8/30 / IOC-容器基准性能对比
统一速度更快,但它不是最好的