架構模式 節選自《聞缺陷則喜》(此書可免費下載)
架構模式很多,僅舉三例。
1.1.1 分層架構
經典三層架構最優場景,資料庫管理軟體(增刪查改),大部分企業軟體都是這類。經典三層架構自頂向下由用戶介面層、業務邏輯層與數據訪問層組成。《領域驅動設計》中的分層架構:用戶介面層、應用層(給調用者提供完整的業務用例)、領域層、基礎設施層。
分層依據:一,頂層更面向業務和用戶,底層更面向通用和硬體。二,面對變化。三,同層處於同一抽象層次。
注意:如果某一層大部分函數只是簡單調用低層的函數,則此層應該取消。
1.1.2 事件匯流排架構
三個參與者:事件匯流排、發布者、訂閱者,發布者只能發消息給事件匯流排,事件匯流排只能發消息給訂閱者。消息也稱為事件。此架構非常適合於分散式系統,異構系統也沒有影響。一個模組可以同時是發布者和訂閱者。
時間匯流排模組和消息隊列模組的區別:前者收集、轉發消息,不需要知道有多少個訂閱者;後者直接處理消息或轉給子模組。消息隊列相對消息優點:非同步、削峰。消息相對於直接函數調用的優點:解耦。
1.1.3 黑板模式
黑板模式由3個主要組成部分組成:黑板:包含來自解決方案空間的對象的結構化全局記憶體。知識源:專門的模組和它們自己的表示。控制組件:選擇、配置和執行模組。使用場景:語音識別、車輛識別和跟蹤、蛋白質結構識別、聲納訊號的解釋等。這類問題具有如下特點:可以分解成多個子問題,但每個子問題都屬於不同的專業領域。要解決子問題,需要使用不同的表示法和範式,往往沒有既定策略。