微软的依赖注入技术
微软企业类库V4将支持依赖注入(dependency injection)实时分析和模拟能力。依赖注入的出现可以有效的减少藕合问题以及保证构件独立性的一种机制。凭借依赖注入机制可以有助于将可能来自不同项目的构件进行装配并聚合到应用中去,加强代码的重用性。
微软企业类库V4将支持依赖注入(dependency injection)实时分析和模拟能力。依赖注入将作为独立的容器中或库的一部分存在。
对此,不得不提到的是,原本微软计划发布的下一版本企业类库应该是3.5版,而后因为库的一些核心改变而将版本调整为了4.0版。微软模式与实践组产品经理Grigori Melnik对于版本的更改做出如下解释:
关于企业类库版本更改,原本我们的确计划只做一些细微的改进和修改。在我们的产品订单上,DIAB属于另外一个单独的项目。最近从模式与实践峰会和CodePlex的客户反馈,以及一些人士具有建设性的博客和建议使我们相信在发布最新版本的时候加入依赖注入这一适当的时机已经到来了。因此,我们将之囊括进即将发布的企业类库,而这对于企业类库而言已经不再是一个细微的变化了,所以我们将这一版以及依赖注入作为第四版公之于众。
那么什么是依赖注入呢?Wikipedia的定义如下:
依赖注入(DI)是一项编程技术,在一定情况下也被称做控制倒转或是IOC。即使如此,从技术上来讲,依赖注入特指有限范围内的特殊形式的控制倒转(Inversion of Control,IOC)。
依赖注入是指的是由特定的类提供一个可供运行的部分给正在另一个类执行,前者被称为注入类。通常情况下会有多个不一的注入类存在,或是其子类。主类抽象出一系列通用代码供实现所需并且在面对特定需求时将这些代码分派给之前所提到的注入类。
控制倒转(Inversion of Control,IOC)是指程序在某些事件形式下放弃对代码执行的控制而换作简单的应答请求来运行的方式。同样的道理可以得出,在使用依赖注入时,执行类也是放弃了部分代码执行的控制而是使用注入类所提供的运行内容来实现。
近期依赖注入的流行毋庸置疑,但这并不是一个全新的技术。微软通过对外展示在新版本中企业类库的依赖注入特性强有力的表现出了对模块化设计的重视程度:
以构件形式的组合式模块化设计可以有效的减少构件与整个软件系统的其他部分的藕合程度,甚至完全没有,而这种好处是已经得到广泛认可的。依赖注入的出现可以有效的减少藕合问题以及保证构件独立性的一种机制。凭借依赖注入机制可以有助于将可能来自不同项目的构件进行装配并聚合到应用中去,加强代码的重用性。
微软在很早之前就已经在考虑将更多的模块化设计整合到其应用套件中去:
凭借依赖注入的支持在模块化设计中有着非常突出的价值,而这一点对于微软模式与实践部门是早有认识的了,并在之前很长一段时间就在尝试采用。初期的时候,在复合式UI应用套件(Composite UI Application Block ,CAB)中,以及之后在2006年早些时候的企业类库V2中,所提供的ObjectBuilder管道在运行时就已经考虑对象该如何被创建。现在,最新版企业类库的配置系统就是一个基于ObjectBuilder创建的DI容器。
- 本文关键词:

