有沒有想過企業規模的系統是如何設計的?在主要的軟件開發開始之前,我們必須選擇一個合適的架構,為我們提供所需的功能和質量屬性。因此,在將它們應用于我們的設計之前,我們應該了解不同的體系結構。
什么是架構模式?
根據維基百科,
架構模式是一種通用的、可重用的解決方案,用于解決給定上下文中軟件架構中常見的問題。架構模式類似于軟件設計模式,但范圍更廣。
在本文中,我將簡要解釋以下10種常見的體系結構模式及其用法、優缺點。
- 分層模式
- 客戶機-服務器模式
- 主從模式
- 管道過濾方式
- 經紀人模式
- 點對點模式
- 事件總線模式
- 模型視圖控制器模式
- 黑板模式
- 解析器模式
1. 分層模式
此模式可用于構造可分解為子任務組的程序,每個子任務都處于特定的抽象級別。每一層都向上一層提供服務。
一般信息系統最常見的4層結構如下。
- 表示層(也稱為UI層)
- 應用層(也稱為服務層)
- 業務邏輯層(也稱為域層)
- 數據訪問層(也稱為持久層)
用法
- 一般桌面應用程序。
- 電子商務網絡應用。
2. 客戶機-服務器模式
此模式由兩方組成:一個服務器和多個客戶端。
- 服務器組件將為多個客戶端組件提供服務。
- 客戶機從服務器請求服務,服務器向這些客戶機提供服務。此外,服務器繼續偵聽客戶端請求。
使用
- 在線應用程序,如電子郵件、文檔共享和銀行業務。
3. 主從模式
這種模式由兩個部分組成:主人和奴隸。主組件在相同的從組件之間分配工作,并根據從組件返回的結果計算最終結果。
用法
- 在數據庫復制中,主數據庫作為授權源,從數據庫與之同步。
- 連接到計算機系統中總線的外圍設備(主驅動器和從驅動器)。
4. 管道過濾方式
此模式可用于構造生成和處理數據流的系統。每個處理步驟都包含在過濾器組件中。要處理的數據通過管道傳遞。這些管道可用于緩沖或同步目的。
用法
- 編譯器。連續的過濾器執行詞法分析、解析、語義分析和代碼生成。
- 生物信息學的工作流程。
5. 經紀人模式
此模式用于構造具有分離組件的分布式系統。這些組件可以通過遠程服務調用相互交互。
- 代理組件負責協調組件之間的通信。
- 服務器將其功能(服務和特性)發布到代理。
- 客戶機從代理請求服務,然后代理將客戶機從其注冊表重定向到合適的服務。
用法
- 消息代理軟件,如Apache ActiveMQ、Apache Kafka、RabbitMQ和JBoss消息傳遞。
6. 點對點模式
在這種模式中,單個組件稱為對等組件。
- 對等方既可以作為客戶端,從其他對等方請求服務,也可以作為服務器,向其他對等方提供服務。
- 對等方可以充當客戶機或服務器,也可以同時充當兩者,并且它可以隨時間動態地更改其角色。
用法
- Gnutella和G2等文件共享網絡)
- 多媒體協議,如P2PTV和PDTP。
7. 事件總線模式
此模式主要處理事件,有4個主要組件:事件源、事件偵聽器、通道和事件總線。
- 源將消息發布到事件總線上的特定通道。
- 監聽器訂閱特定的頻道。
- 將通知偵聽器已發布到其以前訂閱過的頻道的消息。
用法
- Android開發
- 通知服務
8. 模型視圖控制器模式
這種模式,也稱為MVC模式,將交互式應用程序分為三個部分:,
- 模型-包含核心功能和數據
- 視圖-向用戶顯示信息(可以定義多個視圖)
- 控制器-處理來自用戶的輸入
這樣做是為了將信息的內部表示與信息呈現給用戶和接受用戶的方式分開。它分離組件并允許有效的代碼重用。
用法
- 主要編程語言中的萬維網應用程序的體系結構。
- 像Django和Rails這樣的Web框架。
9. 黑板模式
這種模式對于不知道確定性解決策略的問題很有用。黑板模式由三個主要部分組成。
- 黑板-包含解決方案空間中的對象的結構化全局內存
- 知識源-具有自己表示的專門模塊
- 控制組件-選擇、配置和執行模塊。
所有部件都能接觸到黑板。組件可能產生新的數據對象,這些對象被添加到黑板上。組件在黑板上查找特定類型的數據,并可以通過與現有知識源的模式匹配來找到這些數據。
用法
- 語音識別
- 車輛識別與跟蹤
- 蛋白質結構鑒定
- 聲納信號解釋。
10. 解析器模式
此模式用于設計解釋用專用語言編寫的程序的組件。它主要指定如何計算程序行,即用特定語言編寫的句子或表達式。其基本思想是為語言的每個符號建立一個類。
用法
- 數據庫查詢語言,如SQL。
- 用于描述通信協議的語言。
架構模式比較
下表總結了每種架構模式的優缺點。
原文:
https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
本文:
http://jiagoushi.pro/node/964