ASP.NET MVC架構中依賴性注入的概念
Java平臺的Struct和Spring框架都能夠有效地組織J2EE應用各層的對象。不管是控制層的Action對象,還是業務層的Service對象,還是持久層的DAO對象,都可在Spring/Struct的管理下有機地協調、運行。Spring/Struct將各層的對象以松耦合的方式組織在一起,Action對象無須關心Service對象的具體實現,Service對象無須關心持久層對象的具體實現,各層對象的調用完全面向接口。當系統需要重構時,代碼的改寫量將大大減少。這樣就有了ASP.NET MVC架構中依賴性注入的概念。
其實,依賴性注入(Dependency Injection)和控制反轉(Inversion of Control)二者是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協助時,在傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring/Struct里,創建被調用者的工作不再由調用者來完成,因此稱為“控制反轉”;創建被調用者 實例的工作通常由Spring/Struct容器來完成,然后注入調用者,因此也稱為“依賴性注入”。
具有諷刺意味的是,如今的asp.net mvc框架中也逐漸引入了以上概念。其實,此框架本身的創建就借鑒了以上著名JAVA平臺二框架的構建機理(這也恰恰反映了微軟在許多方面的風格--“為我所用”)。因此,要想全面深入地掌握asp.net平臺的這個新的mvc框架,對于依賴性注入(或控制反轉)這樣的基礎性概念非要掌握透徹不可;否則,只能算一知半解。
【編輯推薦】