本文是繼AgileEAS.NET應用開發平台介紹及AgileEAS.NET之敏捷並行開發方法所做的架構補充,用於闡釋AgileEAS.NET平台的架構設計思路。
說起了系統架構,我也無法給出系統架構的確切定義,我的理解也許也只是基於自己經驗的一個片斷,我是學習園林專業身的,學習過園林建築學,也許對軟體架構最早的理解來源於對建築的理解,我們知道,一個好的建築必須解決建築及其附屬物的荷載及其美觀和居住的舒適性,而這個必須通過其建築的骨架--承重體系來支撐,建築最先進行的其他承重休息的澆築。
軟體之系統架構有如建築的骨架,不同規模、不同地區、不同應用的建築會使用不同的承重結構。軟體系統架構的設計如同對建築的架構設計一樣,對於不同的應用應該應用與之相匹配不同的架構,也就是說,客戶的應用決定著項目的架構及到技術選項。
AgileEAS.NET平台所提出的系統架構適應於中小規律的管理資訊系統。
在AgileEAS.NET應用開發平台介紹中我畫出了AgileEAS.NET的基本架構圖,本文我從系統的橫向擴充和縱向伸縮兩個方面來討論。
橫向擴充:
AgileEAS.NET平台是基於“並行開發”這種思想支援的應用平台,我們在在DotNET中用平台+外掛程式實現了這麼一種理念,其核心的機制既用外掛程式橫行擴充平台。
採用這種思路構建和擴充業務系統,需要一個統一的機制允許業務外掛程式註冊到平台,基於這種思路,各個業務模組,都變成了可以自由組裝、拆卸的外掛程式。
外掛程式運行容器是一組能夠實現外掛程式業務調用的一組應用程式,可以是基於WinFrom的傳統型應用程式、也可以是基於Web的網站應用程式,運行容器調用外掛程式並由外掛程式橫向擴充運行容器的功能,這樣一來,應用系統的開發就轉成為對運行容器的功能擴充,也就是項目的重點轉移於開發模組外掛程式這個焦點。
業務外掛程式的開發人員可以選擇利用AgileEAS.NET所提供的快速開發技術實現,即依賴於平台所提供的基礎組件,也可以選用開發人員自己的技術去實現模組外掛程式,這將涉及到系統的縱向伸縮的問題。
縱向伸縮:
不要是說搞軟體的技術人員,就是某些客戶機構人員,也跟你嚷嚷的要求軟體弄成三層結構才行,我想這個三並不指特定的三層吧,應該是泛指三或者多層結構吧。
目前,大家所指的三層結構應該是對系統進行的所謂介面(UI)、商務邏輯(BI)、資料訪問(DA)三層吧,多層也是對這三層進行了詳細的分解的結果,業界經驗證明,這確實是解決系統複雜性的一種主流模式。但並不是說應用了三層架構就一定能解決系統的複雜性,他不是萬能的。他提供給我們一種解決複雜問題的思路,那就是根據應用的複雜程度合理的去分層。
對於這種分層設計,我建議根據項目的實際情況合理的選擇合理的分層設計,如果對於很小的項目選擇複雜的分層設計,就會演變成為分層而分層的一種漩渦。
AgileEAS.NET支援不同層級的開發,對於很簡單的項目,你可以選擇把介面、業務、資料訪問全部放在模組模組UI實現;對於較複雜的項目,可以選擇使用模組UI+資料訪問層,把商務邏輯併入UI實現,更為複雜的項目可以把介面、業務、資料三部分嚴格分解甚至可以把這三層中的任務一層再分解,比方,資料訪問層可以分解為資料提供者層、資料訪問實現層等,AgileEAS.NET提供一個基於訊息的分布式通訊服務,應用系統可選的基於它實現分布式應用。
總之,系統的架構取決於客戶的應用、技術力量等諸多方面,優秀的架構在於系統擴充、伸縮性以及系統的抽像程度之間尋找一種平衡。