1. 程式人生 > >軟件設計要素初探:架構模式

軟件設計要素初探:架構模式

綜合 擴展性 進行 行為 eclipse acs roo 故障恢復 截器

在 “軟件設計要素初探” 一文,嘗試從軟件設計的整體角度,綜合討論了軟件設計的各種要素。本文探討系統組件交互的架構模式。

架構模式是系統組件及組件交互的模式,決定了處理數據和領域對象的全局控制結構。組件化是使用架構模式的前提。 可參閱 《面向模式的軟件架構》了解更多架構模式。

分層模式

  • 分層模式: 將應用劃分為多個層次,定義各層的接口、任務抽象及消息格式,以及各層之間的通信與交互。業務系統通常會劃分為業務邏輯層、服務層、領域層、數據層。網絡棧協議是分層模式的典型應用。應用分層模式時,為確保系統可維護性,通常第j+1層只依賴於第j層的接口和服務;在性能場合下,可能會有跨層依賴的情況;應對特殊場景的設計中,會有“第j層的服務依賴於第j+1層的服務”的反向依賴關系。可參閱《面向模式的軟件架構:模式系統》第2.2.1節。

RESTFUL模式

  • RESTFul模式:適合資源構建與共享的可伸縮的架構模式,適合於構建API接口。全局規範一致的資源邏輯命名、尋址、返回碼定義,關註資源與數據而非行為或服務;無狀態的聲明式的請求;對客戶端隱藏實現細節;通用的數據返回格式(JSON),跨語言與平臺;使用名詞而非動詞作為路徑名。 可參閱《架構之美》第5章:“Web:面向資源的架構”。

MVC模式

  • MVC模式:“模型-視圖-控制”, 經典的WebUI架構模式,控制處理請求從而更新模型和返回視圖,模型更新驅動視圖更新,視圖請求控制處理。經典的JavaMVC框架有 Struts2, SpringMVC, 前端MVC框架有Extjs4.

插件模式

  • 插件模式:設計了可擴展的插件接口及插件交互機制,開發者只要遵循規範編寫和調試具體的插件並融入到系統,即可為系統增加新功能和新特性。使用插件模式的系統有 Eclipse, Emacs, Firefox, Chrome 等。

訂閱-消費模式

  • 訂閱-消費模式: 大型互聯網應用中幾乎都存在訂閱和消費業務表更新或業務消息推送的子系統。訂閱-消費模式需要高穩定可用的消息中間件,並仔細評估消息延遲對用戶活動造成的影響。新品消息推送、商品消費訂閱、發貨提醒等,我們正處於一個“消息/通知的訂閱-推送-被消費”的移動互聯網時代裏。

Pipeline模式

  • 管道-過濾器-處理器鏈:一個請求沿著管道連接的處理鏈,依次由鏈上的過濾器、攔截器、處理器進行處理並返回。JavaWeb應用的Servlet架構模式是“過濾器-處理器鏈”的典型應用;UnixShell 則是“管道-過濾器-重定向”結構的典型應用。

事件驅動模式

  • 事件驅動模式: 在系統內定義一系列的組件、事件及監聽器,組件發生變化時觸發事件,通知相應的監聽器處理事件更新組件,進而觸發新的事件,如此循環直至手動終止系統或系統崩潰。適用於GUI應用開發。

Actor模式

  • Actor模型: 基於事件驅動的分布式的、異步並發的、可伸縮的、有故障恢復能力的大型消息處理架構。一個簡單例子可參見:“混合使用ForkJoin+Actor+Future實現一千萬個不重復整數的排序(Scala示例)”

規則-工作流模式

  • 規則-工作流模式: 將系統分析成一系列的工作流節點以及規則的解析匹配,使用規則引擎來控制和運行,通過添加規則及規則流,實現可擴展性和可配置性。可參閱使用規則引擎計算工資的簡單例子:“Java Drools5.1 規則流基礎【示例】”,“基於規則和規則引擎的系統” 。

軟件設計要素初探:架構模式