写点什么

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

  • 2007-12-17
  • 本文字数:1609 字

    阅读完需:约 5 分钟

下一个微软 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

2007-12-17 01:281238
用户头像

发布了 90 篇内容, 共 12.0 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

基于rsync实现海量文件高速传输的解决方案

镭速

Android图形渲染系统新

江湖修行

渲染 an'droid 渲染技术

京东前端高频react面试题及答案

xiaofeng

前端 React

细说React组件性能优化

xiaofeng

前端 React

OPPO 对话式 AI 助手小布演进之路

安第斯智能云

人工智能 AI IoT 跨端 语音助手

[译]TIME_WAIT及其对协议和可伸缩客户端服务器系统的设计实现

计算机漫游

TCP TIME_WAIT

前端经典react面试题(持续更新中)

xiaofeng

前端 React

不被定义,思岚科技机器人底盘的百变扩展可能!

科技热闻

Nautilus Chain 现已推出测试网“Triton ”,有哪些潜在的机会?

西柚子

8个云成本优化的最佳实践

SEAL安全

FinOps 云成本管理

连接内网SSH新姿势,告别慢速度及防火墙限制

百川云开发者

Linux 远程连接 主机运维

【NLP 系列】Bert 词向量的空间分布

京东科技开发者

人工智能 nlp NLP 大模型 BERT 企业号 3 月 PK 榜

2022年国内CVC参与股权投资事件1341个,同比减少43.9%;智能制造、医疗健康和企业服务最受青睐丨睿兽分析CVC年报

创业邦

打造语言大模型的生成式AI,澜舟科技一年内完成数亿元融资

澜舟孟子开源社区

人工智能 AIGC

前端常考vue面试题(必备)

yyds2026

Vue 前端

移动端应用性能多维监控——崩溃监控系统

Openlab_cosmoplat

工业互联网 开源社区 崩溃监控系统

大厂不同职级要求有何不同

致知Fighting

Java 后端 晋升

焱融科技发布国内首个NVIDIA DGX A100 + 全闪存储参考架构白皮书

焱融科技

文件存储 容器存储 分布式文件存储 高性能存储 全闪存储

深入理解 Taier:MR on Yarn 的实现原理

袋鼠云数栈

hadoop

mac打开dmg镜像提示“无效的校验和”的解决方案

春天的风暖暖的

好朋友 TIME_WAIT

计算机漫游

TCP协议 TIME_WAIT

Stage模型深入解读

HarmonyOS开发者

HarmonyOS

vue实战中的一些小技巧

yyds2026

Vue 前端

vue的几个提效技巧

yyds2026

Vue 前端

3.15 数据库吐槽大会

NineData

数据库 mongodb 云计算 程序员 图数据库

ChatGPT-4 来了, OpenAI 官宣6种已落地应用和服务模式

B Impact

读懂React原理之调和与Fiber

xiaofeng

前端 React

前端必会vue面试题(必备)

yyds2026

Vue 前端

微软Enterprise Library 4.0将支持依赖注入_.NET_Robert Bazinet_InfoQ精选文章