在为.NET选择依赖注入框架时应该考虑什么

另请参阅哪些C#/ .NET依赖注入框架值得研究?

现在有许多依赖注入框架可供选择。 由于您使用的库,您经常被迫使用给定的依赖注入框架。 然而,通用服务定位器库已使库代码独立于注入框架。

花足够多时间来学习所有这些以决定使用哪一个是不合理的。 我不相信我们还没有达到可以谈论最佳依赖注入框架的阶段。 那么我应该问什么问题关于项目和我自己来帮助决定在特定情况下使用最佳依赖注入框架?

了解为什么选择当前使用的依赖注入框架也很有用,并且如果您仍然对该选择感到满意。

比较依赖注入框架的样式时是否还有一个有用的词汇表?

服务定位器库是在现实生活中工作的,还是你被迫在同一个项目中使用大量不同的依赖注入框架?

使用每个依赖注入框架进行代码折叠是多么容易,比如像ReSharper这样的工具如何在给定的框架下很好地工作?


仅供参考,就在今天上午,我在这里遇到了所有.NET IoC容器之间的一个有趣的比较:

http://elegantcode.com/2009/01/07/ioc-libraries-compared/

少数问题:

  • 你需要多少主流支持? 春天可能是最大的一个。 每个人都使用过它,或者现在已经听说过,所以有很多信息。 它也可能具有最多的功能,但这意味着只需要学习更多。 像Autofac这样的小容器可能不错,但是您可能会遇到一个您无法找到帮助的问题。
  • 你方便的W / Xml配置? 每个IoC容器都依赖于某种配置和设置。 Spring和Unity Xml很重。
  • 这是一个永久的选择吗? 如果你在其中一个地方只能选择一个镜头,那么这并不重要。 但是,如果你想在路上选择另一种解决方案,你可能不希望有一个IoC需要你为你的类指定属性(与上述问题相反),因为当你不得不全部撕掉所有类时,你会恨自己那个东西出来了。 相比之下,wwapping出一些XML配置可能不会那么痛苦。
  • 你的店是什么样的? 仅仅因为“喘口气!它不是微软!”我偶然发现了一些开源选项。 反应。 如果你是一个直接的MS商店,使用Unity将是一个更容易的文化胜利。
  • 个人提示:

    我已经使用了StructureMap,其原因与我链接的博客中提到的相同。 我认为Xml配置是一个巨大的难题,特别是调试(参见WCF)。 我还没有尝试Ninject,但基于他们的营销,它一定是超级拉德!


    很难回答哪个框架是最好的,但我可以告诉你哪个框架最简单:简单注入器:

    Simple Injector是一款易于使用的.NET和Silverlight控制库。 它仅支持基于代码的配置,对于不熟悉较大IoC / DI库的开发人员来说是一个理想的起点

    http://simpleinjector.codeplex.com/

    无耻的插头btw ;-)


    我认为选择归结为找到一个符合您的要求和个人偏好的框架。

    您的项目是否已经使用了一个库,例如已经与DI框架集成的rhino-tools? 如果确实如此,那么如果你想避免使用“大量不同的依赖注入框架”,这可能是一个好的起点。

    看看这两个帖子:

  • SO:企业库Unity与其他IoC容器
  • SO:你使用哪个.NET依赖注入框架?
  • 链接地址: http://www.djcxy.com/p/82119.html

    上一篇: What should I consider when choosing a dependency injection framework for .NET

    下一篇: Why can a .NET delegate not be declared static?