周健



摘 要
本文首先通過總結三層架構體的實踐經驗,介紹了在人們熟知的表示層、業務邏輯層和數據存儲層這種縱向分層基礎上更進一步的內部七層詳細劃分;又以松耦合組件的實現為重點,介紹了利用插件技術和AOP方法對三層結構在軟件體系橫向上的分解方法及應用要點;最后介紹了三層結構按地域分布時的應用實踐。
【關鍵詞】三層架構 軟件體系 插件技術 地域分布
隨著軟件工程研究與應用的不斷進步,軟件開發規范以及面向對象編程思想得到了不斷深入的應用,人們對軟件可維護性和可重用性的要求不斷提高,使得傳統的二層架構系統愈加顯得不能適應軟件開發需要,由此在用戶界面層與數據庫層之間增加一個“中間層”的三層軟件架構體系應運而生。這里所說的三層體系,不是指服務器物理設備上的三層配置,也不僅僅有B/S應用才有三層體系結構,三層是指軟件系統在應用邏輯設計上的三層。通過引入中間層,將復雜的商業邏輯從傳統的二層結構(Client-Server)應用模型中分離出來,并提供了便于擴充、易于訪問、易于管理的設計思想和方法,通過將多種應用服務分別封裝部署于應用服務器來增強了應用程序的可維護性和可重用性,使用戶在管理上所花費的時間最小化,從而實現了安全、穩定和高效的系統應用。
1 軟件的三層架構體系
三層架構體系已經成為軟件設計領域的基本結構,雖說關于三層架構目前已經有多種不同的描述定義,但在實際應用中它的基本思想都是通過在界面應用層和數據訪問層之間增加一個用來銜接兩者之間的業務邏輯層,借此來實現系統設計中“高內聚低耦合”的效果,從而達到為系統的擴充和維護創造更多便利條件的目的。我們在應用中以微軟DNA架構定義為基礎,并且根據實踐中的體會對各層的內部進行了進一步的細劃,形成了如圖1所示軟件的實用型的三層架構體系。
1.1 表示層
表示層的功能就是用于接收用戶輸入的數據和顯示經過系統處理后用戶所需要的數據,這一環節在應用中可以再劃分為兩部分,其中的界面外觀層用來實現系統用戶界面的設計需求;而界面規則層是通過界面外觀層接收的用戶指令來調用業務接口層相應的接口,并將界面輸入的業務數據傳送給業務邏輯層。
1.2 業務邏輯層
業務邏輯層也就是系統的“中間件”,它在系統中發揮著表示層與數據存儲層兩者之間的聯結作用,在系統運行中承擔著數據校驗、計算處理和業務規則實現等業務邏輯處理功能,對于輸入的數據經過加工后保存到數據存儲層,而對于用戶從數據存儲層中檢索提取的數據返回給表示層。在具體實施時又可以細分業務接口層,利用它來接收表示層用所提供的指令接口,并將指令操作結果再返回給表示層;業務規則層,則是用來接受用戶指令,并將該指令根據需要劃分給不同的構造器進行處理,并構造出所對應的實體;實體層則是對數據庫對象的抽象,常見的有表、視圖、觸發器和存儲過程等;數據訪問層具體用來實現對數據庫的連接、查詢、插入、更新和刪除等操作。
1.3 數據存儲層
數據存儲層就是系統中的數據庫系統或數據倉庫系統,其中包含了表、視圖、觸發器和存儲過程等數據庫對象。
2 三層結構+插件的應用特點
通常所說的三層架構是對軟件系統進行“縱向”分層,而三層架構在實際應用中經常會形成圖2所示帶有插件的三層架構,它是在三層架構基礎上利用各層上所添加的Addin“插件”對軟件系統進行了“橫向”的分解,這種以縱向分層為基礎,以橫向分解為擴展的軟件架構體系整體上可以被看作是一個“網格”形結構。其中的某些網格可以看作是軟件系統的“擴展點”,我們可以利用這些擴展點來掛接“插件”,這樣就可以在三層架構的每個內部層級上通過掛接適當的插件來完成該層的一些功能,從而實現了一個軟件系統與外接應用程序的“熱插拔”式擴展,也就是說可以在少影響甚至不影響系統服務的情況下,動態的實現有關插件的加載、移除或更新等操作,通過采用這種插件技術可以實現以下功能:
(1)對于表示層,可以動態地對某些用戶界面進行更新替換,或對新增的用戶界面模塊進行加載;在業務邏輯層,可以動態地某項業務服務模塊進行加載、替換或者刪除;在數據訪問層,通過使用插件技術我們可以動態地添加對新的數據庫類型的支持。這些功能模塊的加載、替換或者刪除都是在系統整體架構保持穩定的基礎上,在運行時就可以實現的。這種插件的“熱插拔”功能使得一個應用系統的可擴展性得到了極大的提高。
(2)在需要進行系統升級時,大多可以通過升級某個層級的插件就可以實現了,還可以做到在系統服務整體不間斷的情況下進行插件的動態升級。
(3)為了實現系統的“三層架構+插件”結構,在系統設計時就需要對系統內部各層進行“松耦合”的設計,只有滿足松耦合要求的組件才可以被做成“插件”。為了更好的實現松耦合的組件設計,在架構模型中可以采用面向切面編程AOP(Aspect Oriented Programmingg)框架進行函數式編程,采用AOP技術的主要作用是可以實現對某些業務邏輯的橫向關鍵點的隔離,從實現了系統中業務邏輯各個部分之間的“低耦合”設計,提高了程序的可重用性,自然也就提高了開發的效率。
3 按地域分布的三層結構應用特點
對于各類跨地域分布的應用系統,可以設計為圖3所示的按地域分布的架構,形成一種基于地理位置的服務。地域分布的架構是在上述的三層架構和“三層+插件”架構基礎上按應用需求的地域分布式服務體系。它的應用特點如下:
3.1 跨地域分布的服務需求案例
假設某一系統需要為全國的多個城市提供業務功能服務,每個城市的客戶量很大,而且每個城市訪問的數據需求可能是不一樣的,訪問的功能模塊也各不相同。某客戶除了需要向該系統請求服務之外,還會通過該系統與其它客戶進行即時通信,而這兩個客戶可以是在同一個城市,也可能位于不同的城市。
3.2 按地域分布式架構的應用要點
首先,地域分布式架構將用戶管理和業務功能服務分開,通過分別構建應用服務器和功能服務器來實現不同的服務,然后將它們部署到不同的系統節點上。應用服務器和功能服務器都是以三層架構為基礎,采用了“三層架構+插件”架構的架構。比如,對于北京這一地域,系統可以部署一臺應用服務器和一臺功能服務器,客戶可以通過客戶端來訪問應用服務器實現服務請求。假設有一天上海地區的客戶量大幅度增加,因為系統中的業務計算處理都是在功能服務器上完成的,由此會導致功能服務器的訪問壓力劇增。在這種局面下,按地域分布式架構將允許系統在不停止任何服務的情況下,動態的加載新增的功能服務器,新添加的功能服務器能夠自動注冊到應用服務器。系統中的應用服務器可以監控每個功能服務器的負載情況,每當有客戶端請求到來時,應用服務器會將請求交給負載最低的功能服務器進行處理,這就實現了功能服務器的負載均衡。地域分布式架構還可以通過配置跨區域應用服務器來解決應用服務器之間的通信問題。所有應用服務器在啟動的時候,將自動向跨區域應用服務器進行注冊,這樣就可以融入到整個地域分布式架構體系中。
4 結束語
研究軟件系統三層架構的主要目的就是為開發人員進行系統的開發、部署、維護而服務的。在系統的開發中通過中間層的劃分,實現了表示層和數據庫層最大程度的脫離,也確保了系統組件的可維護性和可重用性。而“三層+插件”架構,則是利用插件技術和AOP方法在三層結構體系基礎上對軟件系統的橫向分解,目的就是要實現系統組件的松耦合。按地域分布的結構體系,則是三層架構和“三層+插件”架構在跨地域軟件系統中的一種解決方案。
參考文獻
[1]胡文生,楊劍鋒,趙明.面向可維護性的軟件體系結構設計[J].微電子學與計算機,2016,33(07):145-149.
[2]謝偉明.面向服務的軟件體系架構總體設計[J].電子技術與軟件工程,2016,59(24):42.