帮助获得DI / IoC

时间:2009-09-10 04:10:38

标签: dependency-injection inversion-of-control castle-windsor

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

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

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

提前致谢

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:6)

列举一些特别的好处:

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

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

当然,它是关于Spring Framework的,一般的DI概念仍然适用。