業務分層
依據行業經驗來看,分層是解決複雜問題的簡單方法,通過分層,可以把一個複雜問題分解為不同層次應用的小問題,解決各層小問題的難度小於總的問題難度;分層最成功能莫過於電腦網路通訊協定,ISO/OSI、TCP/IP。
在資訊系統開發中,我們也對一個應用按邏輯上劃分為三層:資料層、業務層、介面層,其商務邏輯如所示:
大家通俗的對這樣的結構稱之為三層結構,或者演變為N次結構(對其中的某一層進行分解),兩層結構(合并介面與業務為一個層,或者合并業務層與資料訪問層)或者一層結果(所有的都在UI層)。
分層的架構設計或者實踐在於應用開發的需求以及開發人中技術相制約,只有選擇合適的分層模型,沒有最優的分層模型。
AgileEAS.NET平台的分層
AgileEAS.NET平台應用開發提供了2-3/N的分層實現支援,開發人員可以根據應用系統的規模選擇不同的分層模型,下面我就從2層結構開發說起:
這種2層的結構在程式部署有兩個程式集支援一個應用;一個是UI部,另一個是資料訪問層部分,UI和資料訪問層共同完成了業務層的功能,UI偏重於業務的輸入驗證,DAL層則偏重於業務的資料處理。
在AgileEAS.NET平台中,資料訪問層是基於介面驅動的資料訪問層,也就是說把資料訪問層分解為資料提供者層與訪問實現層,如所示:
在所示的架構中,對資料訪問層按照介面驅動的思想分解為資料訪問層介面組件和不同的資料庫訪問層實現,UI只依賴於資料訪問層介面,不與具體的資料庫實現相關,也就是業務只依賴於聲明,而不依賴於實現,這樣就有一個好處,當資料訪問層實現做了修改之後不會影響到介面層(UI)。
在結構的基礎上,在UI層和DAL層加入獨立的商務邏輯層就得到如所標的結構:
在這種結構中,系統介面層訪問商務邏輯層,而商務邏輯層依賴於DAL介面層,並在運行期決定是否載入那一個DAL實現,這中結構是AgileEAS.NET平台推薦的應用分層模式,平台的資料對象產生器已經產生了基於介面驅動的資料訪問層代碼,在介面層開發中,AgileEAS.NET平台提供了一系統的UI與ORM對象資料繫結的實踐。
AgileEAS.NET平台開發的資訊系統可以運行在基於.NET WebServices、.NET Remoting技術的分布式環境中,這樣我們就引伸出別一個分層結構:
這種新的分層結果增加了業務代理層和通訊/傳輸服務(層),最初這種結構被應用於分布式應用中,在系統介面層、業務代理層、商務邏輯層各層之間資料以ORM對象形式傳遞。
對於涉及到的通訊/傳輸服務,或者說通訊/傳輸服務層,在分布式應用中,她是一個事實存在的通道,用戶端部署著介面層、業務代理層,應用程式伺服器剛部署著商務邏輯層和資料訪問層;但是在非分布式應用中,比如用戶端聯想著所有組件,那麼就通訊/傳輸服務,為了統一這種分層架構,我在AgileEAS.NET平台中,對於訪問本地業務組件的這種服務搞了一個虛擬通訊/傳輸服務。
藉助於這樣和分層架構,AgileEAS.NET平台所開發的應用,可以在不修改任務程式的情況下,只修改設定檔即可實現本地程式與分布式應用程式的自由切換。
關於商務邏輯層
AgileEAS.NET平台採用ORM技術來構建資料訪問層代碼,因為ORM已經對資料庫的讀取、增加、刪除、和修改;從理論上來講,資料訪問層已經實現了資料的增加、刪除和、修改操作,業務層只需要調用這些操作,也可以是介面層直接調用資料層的這些基礎操作,這樣就形成了一個弱化的商務邏輯層。
如果嚴格的去追究商務邏輯層可以劃分獨立的商務邏輯和與資料處理相關的業務層,在AgileEAS.NET平台的資料對象設計器中產生的程式碼是基於部分類別實現的,也就是說,產生器所產生的程式碼中預備了一半的代碼檔案由程式員寫與商務邏輯相關的複雜資料處理代碼,而商務邏輯層接受介面層的請求調用資料訪問層的資料處理方法以及完成如交易處理等。
而商務邏輯代理層組件根據業務層組件產生相應的業務代理代碼,完成系統介面層請求向真實的商務邏輯層轉移的功能。
UI開發
介面層開發是應用開發中非常重要的部分,軟體所提供的應用都需要通過介面展示給系統最終使用人員,友好的人機互動可以讓操作人心賞心悅目;而如何設計出友好、美觀的人機互動介面是開發人員及美工人員功底的體現。
在AgileEAS.NET平台中,系統介面層也是應用開發中外掛程式的一個環節,系統介面層中的某些UI需要實現AgileEAS.NET平台的外掛程式契約,直接或間接的實現IModule介面或者使用Module屬性標記模組。
AgileEAS.NET平台中提供了一系統的UI基礎模板及輸入驗證、UI資料互動管理的輔助開發組件,以方便快速的完成UI的編碼。
連結
AgileEAS.NET平台開發指南-系列目錄
AgileEAS.NET應用開發平台介紹-文章索引
AgileEAS.NET官方網站
敏捷軟體工程實驗室
QQ群:116773358,群一已滿