InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

微软Enterprise Library 4.0将支持依赖注入

作者 Robert Bazinet 译者 张海龙 发布于 2007年12月17日

领域
语言 & 开发,
企业架构
主题
.NET ,
企业架构
标签
微软 ,
模式与实践

下一个微软Enterprise Library的版本——V4——将预置支持依赖注入。依赖注入将通过容器以独立或作为库的一部分来提供。

特别值得一提的是,下一个Enterprise Library的版本号原本应该是v3.5,现在已将其改为v4.0,这是为了适应库中大量核心变化的需要。微软模式与实践组的产品经理Grigori Melnik对版本的这一变化给出了他的理由:

对于Enterprise Library版本的变化,最初,我们只是打算做一些小的增强和修改。DIAB原本是我们的产品储备中的另一个独立项目,基于最近模式与实践组高级客户的反馈、与Enterprise Library支持者的来往信件、来自模式与实践组和CodePlex上其它团队的评价以及人们建设性的博客记录和建议等,我们认为现在就是推出依赖注入的合适时机,于是我们就将它加入到即将发布的Enterprise Library中,但这已不再是一个小变化,所以,我们决定将其版本号变更为v4。

那么,什么是依赖注入呢?Wikipedia上有这样的解释:

依赖注入(DI)是一种编程技术,有时也被(不正确地)称为控制反转(或IoC)。其实,从技术角度来说,依赖注入特指对一种特定IoC形式的有限范围实现。

依赖注入是指一个类的实现部分上是由另一个类来执行的情况,这个类就是注射类。某些时候,它们是注射类的多个不同变种(或是其子类)。主类抽象出所有实现所需的通用代码,并在需要特定行为的地方委托给注射类。

控制反转是程序放弃对自己可执行代码的控制权,而只是通过简单地应答请求来执行自己的一种方式(通常是以事件的形式)。同样地,使用依赖注入的类也是放弃了自己部分实现的控制权,让注射类来控制它们的。

依赖注入不是什么新技术,但最近却逐渐流行开来,这里有一篇ThoughtWorks的Martin Fowler写的文章对它进行了很好的介绍。

微软展示了通过向Enterprise Library中增加依赖注入,以更好地利用模块化设计的重要性:

内聚组件式模块化设计的好处现在已经获得了普遍的认可,它可以让组件与软件系统的其它部分只产生少许或完全没有耦合。依赖注入就是彻底解决耦合和减轻组件依赖的一种机制。轻量级依赖注入容器有助于将组件装配(组件也可能来自不同的项目)到一个运行时内聚的应用中,同时促进代码的重用。

微软很早就开始在它们的应用程序中加入合成的模块化设计:

在模块化设计中实现对依赖注入的支持,其价值早已被微软模式与实践部门认识到,并已采用很久了。最早的时候,在Composite UI Application Block(CAB)中实现了它,后来就是Enterprise Library v2(2006年的早些时候),ObjectBuilder的管道允许在运行时决定对象该如何被创建。现在,Enterprise Library的配置系统就是一个基于ObjectBuilder创建的DI容器。

4.0版的Enterprise Library将包括很多新的设计和重构。

在即将发布的EntLib v4版中,我们计划提供支持依赖注入的容器(扁平和层次化的),这些容器将与EntLib v4一起被独立打包。此外,为了展示现实世界中的项目该如何有效使用依赖注入,我们打算重构一个EntLib块,抽像掉其中的配置代码(配置器)。我们还将创建一个EntLib的Facade,以将所需的独立配置器注入其中。客户端可以通过Facade请求服务,DI容器将处理这些请求,并让服务所需的所有对象运行起来。这不仅让设计变得更简洁,同时也让产品更易于使用和配置,而做到这一切,你所需要的只是应用这些程序块。

一些现存的.NET应用框架早已支持依赖注入,而且可以与新的应用程序协同工作,比如:

使用这些容器的组织可以在他们已有的基础结构中应用新的Enterprise Library。任何一个使用现有版本Enerprise Library的人,都可以在不破坏已有代码的情况下升级到新的版本。

更多关于微软Enterprise Library的信息,可以从微软模式与实践部门的网站上获取,不过,现在还没有公布这个库的4.0版本的发布日期。

查看英文原文Microsoft Enterprise Library 4.0 will get a dose of Dependency Injection

模式与实践部门 发表人 Dong Nan 发表于
  1. 返回顶部

    模式与实践部门

    发表人 Dong Nan

    这个部门有大牛么?Martin Fowler会挖过去么?

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。