早就有想法寫一個通用的底層架構了,畢竟平時的工作很多,使用第三方架構對項目適應度不會很滿意,所以還不如自己抽時間寫一套自己用著舒服的架構,於是花了幾個月的時間完成了這個項目的開發,現在介紹給大家,相信這套架構一定會適合實際工作中的需要,並對開發效率有所提升。本系列的文章將分8部分為大家介紹一下這個項目和這些庫檔案的使用。
本系列文章要介紹的架構名字叫做IsLine FrameWork,你可以叫他“愛因斯坦”。它不是行業業務架構,但可以作為程式員開發項目的套件,使用這套底層套件開發系統,可以簡化代碼,提高代碼品質。IsLine FrameWork主要包括DataProvider、AppLogProvider、ExceptionProcessProvider、HttpContentProvider、IsLineFrameWork、SecurityProvider、TaskQueueProvider 7個模組,共18個命名空間,分別管理著這些Provider的主要方法以及各種類庫、介面。
表 1.1 命名空間名稱列表
IsLine.AppLog.DataTypeEnum IsLine.AppLog.Configuration IsLine.AppLog.AppLogProvider |
IsLine.Data.DataTypeEnum IsLine.Data IsLine.Data.ContainerDefiner IsLine.Data.DataProvider IsLine.Data.Configuration |
IsLine.Security.Cryptography IsLine.Security.BaseFunction |
IsLine.ExceptionProcess.DataTypeEnum IsLine.ExceptionProcess.ExceptionProcessProvider IsLine.ExceptionProcess.Configuration |
IsLine.HttpContent.HCDataTypeEnum IsLine.HttpContent.HttpContentProvider |
IsLine.ILDateTime IsLine.Message.Mail |
IsLine.Provider.DataProvider |
|
IsLine FrameWork 的所有對外表現都是以Provider形式體現的,每一個Provider分為功能、枚舉以及配置,每一個Provider都是遵從這個契約開發的,同時這也是命名空間的劃分規則。
“功能”命名空間表示該Provider的主體完成任務,“功能”命名空間會包括介面、抽象類別以及對這些抽象元素的實現,它是Provider的主體部分。
“枚舉”命名空間表示Provider中所有用到的需要與使用者互動的資料類型。
“配置”命名空間表示Provider需要設定檔支援的資訊部分,Provider運行前,系統會自動載入相應的設定檔,並載入相關節點,將這些節點內的資訊提供給“功能”模組進行處理。
現在先來簡單說說各個Provider的作用。
1.DataProvider
與其他架構一樣,DataProvider為項目提供了與資料庫互動的能力,它的優點在這裡不再闡述,這裡只說一下它與其他架構的資料訪問層不同的地方。
DataProvider同時相容SQL SERVER與ORACLE兩種資料庫,並開放IDBOperater介面,使用者只要實現IDBOperater介面工廠,就可以為DataProvider提供執行個體,從而實現使用第三種資料庫,而無須修改資料庫調用關鍵字。除此之外,DataProvider提供了靜態訪問與執行個體訪問兩種方式,針對不同的ADO.NET容器,使用者可以選擇不同的方式,而且提供統一的Dispose()方法,使用者只需一次調用,即可關閉所有的Reader;而靜態調用則不需對其做任何資源釋放操作。靜態訪問與執行個體化訪問是根據連線導向與非串連的工作方式區分的。
DataProvider還為使用者提供了RecordProvider,通過它,使用者可以方便 操作.config檔案、文字檔、xml檔案等。
DataProvider附帶了資料容器選項:ContainerDefiner.cs,利用這個類的執行個體,使用者可以直接調用各種ADO對象,並且容器對一些較大的資料對象進行緩衝、壓縮等最佳化,這些最佳化在儲存時遵循“空間換時間”原則,在傳輸時遵循 “時間換空間”原則,前台業務效能會得到本質的提升!
2.AppLogProvider
AppLogProvider為使用者提供了強大的日誌記錄功能,使用者可以為程式中的每個“日誌執行個體”提供單獨的配置,每種配置有可以有不同的“Render”,每種Render代表可以使用不同的“Appender”,由Appender決定日誌執行個體的重要等級、記錄介質、記錄格式、布局等屬性。這一切使用者可以通過配置完成,不許更改任何代碼。換句話說,如果你原來的系統日誌全都記錄在文字檔中,現在希望將日誌記錄至SQL或ORACLE資料庫,那麼你唯一要做的事情就是更改配置,如果你非要把日誌輸出至電視機,那麼你需要實現AppLogProvider派發的IappLogProvider介面即可實現。
如果你用過Log4Net,那麼AppLogProvider你一定會很熟悉,只是AppLogProvider提供了更加靈活的配置方式。
3.ExceptionProcessProvider
ExceptionProcessProvider為使用者提供異常控制功能,它主要分為異常記錄與異常顯示兩個模組。
異常記錄模組是基於AppLogProvider的,使用者可以通過傳遞Exception執行個體達到記錄異常的目的;同時ExceptionProcessProvider支援使用者自訂異常模型,這個模型可以與整個軟體模型一起建立,通過實體異常模型(須繼承自Exception)處理事件,並實現ExceptionProcessProvider派發的介面,從而實現異常記錄的功能。異常顯示模組是指異常發生時,對使用者展示的通知資訊,這些通知的形式在ExceptionProcessProvider被分為10種,使用者僅通過配置就可以實現在這10種Style之間切換。
4.HttpContentProvider
HttpContentProvider為使用者提供了Cookie、Session、Cache的存取方法,使用者通過設定檔,就可以控制這些狀態量的屬性,例如Cookie範圍、滑動時間,Cache的依賴方式(僅SQL SERVER)等。使用者通過這些方法,可以方便建立、查詢、刪除、更新這些狀態量。
5.IsLineFrameWork
IsLineFrameWork是整體IsLine架構的核心,在架構被載入之前,IsLine.dll會對整個架構進行配置,完成定製任務。
6.SecurityProvider
SecurityProvider為使用者提供了加密與解密、強加密與解密的方法。這些加密措施為加密設定檔中的密碼提供依據。
7.TaskQueueProvider
TaskQueueProvider是一個服務隊列,使用者可以用它來註冊已有的服務,TaskQueueProvider將根據服務節點元素,返回執行個體供使用者使用,從而搭建公司專屬應用程式的“場”模型。
在下一講,我們會詳細的說明一下如何進行資料訪問。
此文已在《軟體報》同步發布,任何個人媒體不得轉載。