控制反轉,即IOC(Inversion of Control),也叫反轉模式,也稱依賴注入DI(Dependency Injection)模式,關于此概念的解釋我在此文不做過講說明。
對于設計模式類的東西,我也沒有認真系統的去研究過那X類N種設計模式,無論何種設計模式,都用于解決一個問題,那就是解決對象之間的耦合關系,即解耦。
AgileEAS.NET在最初版本最不包含IOC容器,更多應用抽象工廠之類的設計模式,在這AgileEAS.NET大概第二個版本,加入了一個輕量級(微量級)的IOC容器,也許實作的并不優雅,在多年的應用中慢慢完善。
以下我列舉一個 AgileEAS.NET平台IOC容器的一個應用場景,在某個産品開發中,有的産品使用ORACLE資料庫、有的客戶使用SQLServer資料庫,這就要求我們必須做到産品同時支援兩種資料庫,我們在開發中對資料DAL采用其他接口驅動的設計,即定義三個項目:DAL接口、DAL的SQLServer實作、DAL的ORACLE實作,假定三個項目名稱為Exam.DAL.Interface、Exam.DAL.SQLServer、Exam.DAL.Oracle;我們在Exam.DAL.Interface中定義N個業務對象接口和一個管理這些業務對象接口的IDALManager接口:
我們力争在設計中使用接口驅動并且使用具體被調用者在運作期确認,當然在這樣的應用場景中除了IOC容器之外可以用其他模式進行實作,我在此不做說明。
我們在Exam.DAL.Interface增加一個公共類DALHelper并做如下定義:
修改系統配件檔案中的IOC定義:
這樣我們就完成了對IDALManager與具體執行個體化對象完成了結偶,當然上例隻是一個很簡單的例子,AgileEAS.NET中的IOC實作了構造注入和屬性注入,以下配置示例:
對于IOC容器中的對象生存方式定義如下:
在使用中IOC提供了基于配置檔案和程式配置兩種方式進行對象配置,IOC容器使用元件容器IContainer和IOC上下文環境IContext提供服務,IContainer定義如下:
IContext定義:
QQ群:120661978,125643764
<a href="http://www.cnblogs.com/eastjade/archive/2010/04/19/1715662.html">AgileEAS.NET之靈活并行開發方法</a>
<a href="http://www.agilelab.cn/">靈活軟體工程實驗室</a>
本文轉自 agilelab 51CTO部落格,原文連結:http://blog.51cto.com/agilelab/561914