10 種常見的軟件架構模式
作者:Go 語言由淺入深
鏈接:https://www.jianshu.com/p/18944235727a
你是否想知道企業大規模系統是如何設計的? 在軟件開發開始之前,我們必須選擇一個合適的架構,能提供所需的功能和質量特性。因此,在將架構應用到我們的設計之前,我們應該瞭解各種不同架構的特點。
什麼是架構模式?
根據維基百科:
架構模式是在軟件架構上針對特定上下文件解決常見問題的通用、可複用的解決方案。架構模式與軟件設計模式相似,但範圍更廣。
在本文中,我將簡要解釋以下 10 種常見的體架構模式及其用法和優缺點。
1、分層模式
2、客戶服務器模式(CS)
3、主從模式
4、管道過濾器模式
5、代理模式
6、P2P 模式
7、事件總線模式
8、MVC 模式
9、黑板模式
10、解釋器模式
1、分層模式
此模式可用於構造可分解爲子任務組的程序,每個子任務組處於特定的抽象級別。每一層都爲下一層提供服務。
信息系統中常見的四層模式如下:
-
表示層(也稱爲 UI 層)
-
應用層(也稱服務層)
-
業務邏輯層(也稱領域層)
-
數據訪問層(也稱持久化層)
用途
-
通用桌面應用
-
電子商務應用
2、客戶端服務器模式
這個模式由兩部分組成; 一個服務器和多個客戶端。服務器組件將爲多個客戶端組件提供服務。客戶端向服務器請求服務,服務器向這些客戶端提供相關服務。此外,服務器繼續偵聽客戶機請求。
用途
在線應用程序,如電子郵件,文檔共享和銀行應用。
image
3、主從模式
這個模式由兩部分組成;master 和 slaves。master 組件將工作分配給相同的 slave 組件,並根據 slave 組件返回的結果計算最終結果。
用途
-
在數據庫複製中,將主數據庫視爲中心負責寫數據,從數據庫與主數據庫同步。
-
連接到計算機系統總線上的外設 (主驅動器和從驅動器)。
4、管道過濾器模式
此模式可用於創建流數據處理系統。每個處理步驟都包含在一個過濾器組件中。要處理的數據通過管道傳遞。這些管道可用於緩衝或同步目的。
用途
-
編譯器。連續的過濾器分別執行:詞法分析、解析、語義分析和代碼生成。
-
信息處理工作流
5、代理模式
此模式結合解耦組件構造分佈式系統。這些組件可以通過遠程服務調用,相互交互。代理組件負責協調組件之間的通信。
服務器將其功能 (服務和特徵) 發佈到代理。客戶端向代理請求服務,然後代理根據註冊中心將客戶端請求重定向到合適的服務。
用途
消息代理軟件,如 Apache ActiveMQ、Apache Kafka、RabbitMQ、JBoss Messaging。
6、P2P 模式
在此模式中,單個組件稱爲對等組件 peer。對等組件既可以作爲客戶端向其他對等組建請求服務,也可以作爲服務器向其他對等組件提供服務。對等組建可以充當客戶端或服務器,也可以同時充當兩者,它可以隨時間動態地更改其角色。
用途
-
文件共享網絡比如 Gnutella 和 G2
-
基於加密貨幣的產品,如比特幣和區塊鏈
7、事件總線模式
該模式主要處理事件,有 4 個主要組件; 事件源、事件監聽器、通道和事件總線。事件源將消息發佈到事件總線上的特定通道。偵聽器訂閱特定的通道。當消息發佈到它們訂閱過的通道時,偵聽器會得到通知。
用途
-
安卓開發
-
通知服務
image
8、MVC 模式(model-view-controller)
這種模式,將交互式應用程序分爲 3 個部分:
1、模型 - 包含核心功能和數據
2、將信息顯示給用戶 (可以定義多個視圖)
3、處理來自用戶的輸入
這樣做是爲了將信息的內部表示與信息呈現給用戶和從用戶接受信息的方式分離開來。它解耦了組件,並允許高效的代碼重用。
用途
大部分編程語言都使用的 web 開發架構
Web 框架,如 Django 和 Rails。
9、黑板模式
這種模式在沒有確定性解決策略的問題方面很有用。黑板模式由 3 個主要部分組成。
-
黑板 - 結構化的全局內存包含解決方案對象
-
知識源 - 具有自己表示形式的專用模塊
-
控制組件 - 選擇、配置和執行模塊。
所有的組件都可以訪問黑板。組件可以生成添加到黑板上的新數據對象。組件在黑板上尋找特定類型的數據,並通過與現有的知識源進行模式匹配來找到這些數據。
用途
-
語音識別
-
車輛識別與跟蹤
-
蛋白質結構識別
-
聲納信號解析
10、解釋器模式
此模式用於設計組件,該組件用於解釋專用語言編寫的程序。它主要規定了如何對程序行求值,這些程序被稱爲用特定語言編寫的句子或表達式。其基本思想是爲語言的每個符號都建立一個類。
用途
-
數據庫查詢語言,如 SQL。
-
用於描述通信協議的語言。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/1RWk-pP8MZHl2d7Vh646Jw