微軟Enterprise Library 4.0將支援依賴注入
下一個微軟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版本的釋出日期。
特別值得一提的是,下一個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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Enterprise Library 4.0中的依賴注入容器(Unity)預覽依賴注入Unity
- angular依賴注入Angular依賴注入
- XUnit 依賴注入依賴注入
- Struts 依賴注入依賴注入
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- ASP.NET Core中的依賴注入(2):依賴注入(DI)ASP.NET依賴注入
- [譯] 依賴注入?? 哈??依賴注入
- Angular 依賴注入原理Angular依賴注入
- .Net Core — 依賴注入依賴注入
- 理解 Angular 依賴注入Angular依賴注入
- Spring依賴注入Spring依賴注入
- Spring依賴注入---Spring依賴注入
- 依賴注入系列教程依賴注入
- 我看依賴注入依賴注入
- webapi - 使用依賴注入WebAPI依賴注入
- 依賴注入是否值得?依賴注入
- Enterprise Library 4.0開發計劃
- Asp .Net Core 依賴注入依賴注入
- Spring IOC——依賴注入Spring依賴注入
- 入門系列-依賴注入依賴注入
- C# 依賴注入 & MEFC#依賴注入
- Spring 依賴注入 DISpring依賴注入
- 關於依賴注入(typescript)依賴注入TypeScript
- 什麼是依賴注入依賴注入
- .NET8 依賴注入依賴注入
- spring 的依賴注入Spring依賴注入
- 深入淺出依賴注入依賴注入
- C# Unity依賴注入C#Unity依賴注入
- JavaScript裡的依賴注入JavaScript依賴注入
- 依賴注入那些事兒依賴注入
- iOS實現依賴注入iOS依賴注入
- Guice指南-手工依賴注入GUI依賴注入
- Sping-依賴注入依賴注入
- IOC容器和依賴注入依賴注入
- 微軟將停止支援.NET Framework 4.0、4.5和4.5.1微軟Framework
- Golang 依賴注入設計哲學|12.6K 🌟 的依賴注入庫 wireGolang依賴注入
- Spring系列.依賴注入配置Spring依賴注入