Mir*_*ral 100 asp.net-mvc ninject unity-container
我们正在使用ASP.net MVC.
哪个是最好的DI框架Ninject或Unity?为什么?
Men*_*elt 45
上次我看到他们中的任何一个,我发现Ninject略胜一筹.但两者都有其缺点.
Ninject有一个更好的流畅配置方案.Unity似乎主要依赖于XML配置.Ninject的主要缺点是它需要您在代码中的任何地方引用Ninject.Core来添加[Inject]属性.
如果我可能会问,你为什么要限制你对这两个人的选择?我认为Castle.Windsor,Autofac和StructureMap至少同样好或更好.
rob*_*ity 44
我知道这是一个老问题,但这是我的想法:
我个人喜欢Ninject.我喜欢流畅的界面和避免使用XML.我一般都喜欢XML,只是不喜欢这种配置.特别是在涉及重构时,流畅的界面使其更容易纠正.
我想念StructureMap的ObjectFactory,但有一些简单的解决方法可以将它添加到Ninject.
正如Jeffery所指出的,当你只有一个构造函数时,你不必使用[Inject]属性.
我发现我更喜欢流畅的接口,不仅因为它们避免使用XML,而且因为当我改变影响它们的东西时它们会导致编译时错误.XML配置没有,我不得不记得改变我的状态.
我同意Mendelt,没有"最好的"DI框架.这取决于具体情况,它们都有利有弊.认为David Hayden在DotNet Rocks上说如果你使用EntLib的其余部分并且熟悉它,那么Unity是首选.我个人使用Unity是因为我的客户喜欢它在DLL上说微软企业库(Unity)的事实,如果你得到我说的话.
我同时使用xml配置来设置接口和它们的具体实现,但是我在注入时使用代码中的属性,例如:
<type type="ILogger" mapTo="EntLibLogger">
<lifetime type="singleton"/>
</type>
Run Code Online (Sandbox Code Playgroud)
并在代码中:
[InjectionConstructor]
public Repository([Dependency] ILogger logger)
Run Code Online (Sandbox Code Playgroud)
就个人而言,我认为这会使发生的事情变得更加清晰,但当然有人可能会争辩说,在整个应用程序中你都会提到团结.由你决定.
归档时间: |
|
查看次数: |
48696 次 |
最近记录: |