程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 微軟Enterprise Library 4.0將支持依賴注入

微軟Enterprise Library 4.0將支持依賴注入

編輯:.NET實例教程

微軟Enterprise Library 4.0將支持依賴注入

作者 Robert Bazinet譯者 張海龍 發布於 2007年12月17日 上午1時28分

社區
.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一起被獨立打包。

$False$

此外,為了展示現實世界中的項目該如何有效使用依賴注入,我們打算重構一個EntLib塊,抽像掉其中的配置代碼(配置器)。我們還 將創建一個EntLib的Facade,以將所需的獨立配置器注入其中。客戶端可以通過Facade請求服務,DI容器將處理這些請求,並讓服務所需的所 有對象運行起來。這不僅讓設計變得更簡潔,同時也讓產品更易於使用和配置,而做到這一切,你所需要的只是應用這些程序塊。

一些現存的.Net應用框架早已支持依賴注入,而且可以與新的應用程序協同工作,比如:

  • Castle Windsor
  • StructureMap
  • Spring.Net
  • Ninject

使用這些容器的組織可以在他們已有的基礎結構中應用新的Enterprise Library。任何一個使用現有版本Enerprise Library的人,都可以在不破壞已有代碼的情況下升級到新的版本。

更多關於微軟Enterprise Library的信息,可以從微軟模式與實踐部門的網站上獲取,不過,現在還沒有公布這個庫的4.0版本的發布日期。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved