譯文丨10種常見的軟件架構模式

本文譯自https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013?gi=f8addb915af7,作者Vijini Mallawaarachchi,Sep 4, 2017
譯者:evandeng2009(blog.csdn.net/evandeng2009/)

爲了更好的組織語言和理解,符合我們的閱讀習慣,原文的部分段落被合併或者分割。爲體現完整性,不刪減文字,保持原文文字內容。翻譯純屬個人喜愛、分享和收藏。

正文

是否想知道大型企業級系統是怎麼設計的?在軟件主體開發之前,我們必須選擇一個合適的架構來提供所需的功能和質量特徵。所以在應用於設計之前,我們應該瞭解不同的架構。

譯文丨10種常見的軟件架構模式
什麼是架構模式

維基百科:架構模式是在給定上下文的軟件架構中,針對常發生問題的一種通用、複用的解決方案。架構模式類似於軟件設計模式,但是範疇更廣。

本文中,我將簡要的闡述如下10中常見架構模式的應用和優缺點。

  1. 分層模式
    1. 客戶端-服務端模式
    2. 主從模式
    3. 管道-過濾器模式
    4. 代理模式
    5. 點對點模式
    6. 事件總線模式
    7. 模型-視圖-控制器模式
    8. 黑板模式
    9. 解釋器模式

1. 分層模式

該模式用於構建可分解爲多組子任務的程序,每個子任務都在某個抽象層,每個層對上一個更高層提供服務。一般信息系統中最常見的4層體系如下。

  • 表示層(也叫 UI 層)
  • 應用層(也叫服務層)
    業務邏輯層(也叫領域層)
    數據訪問層(也叫持久層)

應用場景

  • 一般桌面程序
  • 電子商務網頁程序
    譯文丨10種常見的軟件架構模式

    2. 客戶端-服務器模式


該模式由兩部分構成:單個服務器端和多個客戶端。服務器組件對多個客戶端組件提供服務。客戶端向服務器端請求服務,服務端提供對應服務給這些客戶端。此外,服務器端繼續監聽客戶端請求。

應用場景

在線應用,比如電子郵件、文檔分享和銀行業務
譯文丨10種常見的軟件架構模式

3. 主從模式

該模式由兩部分構成:主節點和多個從節點。主節點組件向多個獨立的從節點組件分派任務,並根據從節點返回結果計算出最終結果。

應用場景

  • 數據庫複製,主數據庫被視爲權威來源並同步到從數據庫
  • 連接到計算系統的外圍設備(主從驅動)
    譯文丨10種常見的軟件架構模式

    4. 管道-過濾器模式


該模式用於構建生產和處理數據流的系統。每個處理步驟封裝在一個過濾器組件中。待處理的數據被傳送到管道之中,這些管道可用於緩衝或者同步。

應用場景

  • 編譯器,接連的過濾器執行詞義分析,語法分析,語義分析和代碼生成
  • 生物資料學科的工作流
    譯文丨10種常見的軟件架構模式

    5. 代理模式


該模式用於構建組件解耦的分佈式系統。這些組件通過遠程調用彼此交互。代理組件負責多個組件的通信協調,服務器向代理公開他們的能力(服務和特性);客戶端從代理中獲取服務,然後代理重定向客戶端到註冊服務庫中一個合適的服務。

應用場景

  • 消息隊列軟件,比如 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging
    譯文丨10種常見的軟件架構模式

    6. 點對點模式


該模式中,各獨立組件都叫對等點。對等點既可以作爲客戶端從其他對等點獲取服務,也可作爲服務端向其他對等點提供服務。對等點可作爲客戶端、或者服務端、或者兩者,並且在不時間動態切換角色。

應用場景

  • 文件分享網絡,比如 Gnutella 和 G2
  • 多媒體協議,比如 P2PTV 和 PDTP
  • 私媒體程序,比如 Spotify
    譯文丨10種常見的軟件架構模式

    7. 事件總線模式


該模式主要處理事件,有4個主要組件:事件源,事件監聽器,頻道和事件總線。事件源發佈消息到事件總線上的某個頻道,監聽器訂閱某個頻道,並得知在已訂閱頻道中發佈的消息。

應用場景

  • Android 開發
  • 通知服務
    譯文丨10種常見的軟件架構模式

    8. 模型-視圖-控制器模式


該模式也叫 MVC 模式,劃分交互程序爲3個部分:模型——包含核心功能和數據,視圖——顯示信息給用戶(多個視圖可被定義),控制器——處理用戶輸入。它通過分割用戶信息的內部陳述和呈現、接受方式來實現,解耦組件並允許高效的代碼複用。

應用場景

  • 主流編程語言的萬維網程序架構
  • 網頁框架,比如 Django 和 Rails
    譯文丨10種常見的軟件架構模式

    9. 黑板模式


該模式對沒有確定性方案策略的問題很有用。黑板模式由三個主要組件組成,黑板——包含解空間對象的結構化全局內存,知識源——有自擁表示的專門模塊,控制組件——選擇、配置和執行模塊。所有組件都可訪問黑板,可生成新的數據對象並添加到黑板中。在黑板中,可根據已有知識源的匹配規則,尋找某些類型的數據。

應用場景

  • 語音識別
  • 車輛識別和跟蹤
  • 蛋白質結構鑑定
  • 聲吶信號解釋
    譯文丨10種常見的軟件架構模式

    10. 解釋器模式


該模式用於設計解釋特定語言編寫的程序的組件。該組件主要指定怎麼去評估程序代碼行,也就是所謂的用某種語言寫的語句或者表達式,基本點在於給語言符號分類。

應用場景

  • 數據庫查詢語言,比如 SQL
  • 用於描述通信協議的語言
    譯文丨10種常見的軟件架構模式

    架構模式比較


下面的表格概述每個架構模式的優缺點。

譯文丨10種常見的軟件架構模式
版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,我們都會標明作者及出處,如有侵權煩請告知,我們會立即刪除並表示歉意。謝謝。
譯文丨10種常見的軟件架構模式
架構文摘
ID:ArchDigest
互聯網應用架構丨架構技術丨大型網站丨大數據
譯文丨10種常見的軟件架構模式
更多精彩文章,請點擊下方:閱讀原文






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章