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

TerryLee1109發表於2009-01-08
下一個微軟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應用框架早已支援依賴注入,而且可以與新的應用程式協同工作,比如: Castle Windsor ,StructureMap ,Spring.NET ,Ninject 。

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

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12184684/viewspace-531918/,如需轉載,請註明出處,否則將追究法律責任。

相關文章