帮助获得DI/IoC

Her*_*man 7 dependency-injection castle-windsor inversion-of-control

我正在尝试将DI/IoC编程方法引入我们的开发组,但其中一位开发人员提出了以下问题:

我们为什么需要它?是否有任何具体的例子可以向我展示使用像温莎城堡这样的DI/IoC框架的好处?

因此,我问是否有任何案例研究或文章证明DI/IoC可以在企业级.NET网站中受益?

提前致谢

更新:我知道DI/IoC带来的所有好处,但我还没有看到网络上的完整示例,该示例贯穿了使用DI/IoC创建应用程序并从中受益的整个过程.再次,任何文章或链接将不胜感激.

Dav*_*res 6

我正在开展一个项目,我可以看到依赖注入和控制反转至少有三个好处:

  1. 灵活性DI和IoC在较小程度上允许与单元测试相关.我们可以对代码(或被测系统)的特定方面进行归零,并测试这一部分功能,而无需准备数据库表或受到我们目前不关心的代码段的影响.

  2. 通过IoC注入依赖关系是一个相当无缝,自动的事情,它允许人们在不要求底层支持类完整的情况下处理逻辑.例如,我可以编写一个显示用户列表的网页,而无需编写任何代码来从数据库中检索该信息.这可以由其他人编写,可能是并行编写,因此可以在更短的时间内完成更多的工作.

  3. 在我目前的一个项目中,我希望能够向其中一个利益相关者演示Web用户界面和后端处理.DI和IoC使这一过程变得更加容易,因为我可以拥有一系列假货,这些假货可以提供进行演示所需的确切数据.这样,我就不会在前一天确定数据库表的填充方式与我预期的方式相同.

DI鼓励特定类及其依赖项之间的松散耦合,而IoC允许我们动态配置将这些依赖项的哪些实现注入到使用它们的类中.后者对于#3非常重要,因为我的Web应用程序将根据我对web.config文件所做的设置大部分使用IoC进行配置.当我们去制作并开始使用非假类时,我将只需要更改该文件.


Ale*_* N. 6

列举一些特别的好处:

  • 更清洁的代码,其中包含业务逻辑的本质,而不是基础结构的厚度
  • DI允许您通过提供用于解耦应用层的机制来创建更多模块化应用程序
  • IoC允许外部化应用程序连接/引导,并提供集中式(某种程度)资源管理(在某种程度上).含义 - 您有更多时间专注于实际的功能/业务逻辑

关于IoC和DI的一些好消息可以在这里阅读:http://www.theserverside.com/tt/articles/article.tss? l = IntetrotoSpring25

虽然它是关于Spring Framework的,但一般的DI概念仍然适用.