10個(gè)常見(jiàn)的軟件架構(gòu)模式
作者 |?Vijini Mallawaarachchi
來(lái)源?|?cnblogs.com/IcanFixIt/p/7518146.html
想知道如何設(shè)計(jì)大型企業(yè)級(jí)的系統(tǒng)嗎?在開(kāi)始主要的代碼開(kāi)發(fā)之前,我們必須選擇一種合適的體系架構(gòu),它將為我們提供所需的功能和質(zhì)量屬性。因此,在將它們應(yīng)用到我們的設(shè)計(jì)之前,應(yīng)該先了解不同的體系結(jié)構(gòu)。

什么是架構(gòu)模式
架構(gòu)模式是在給定上下文中解決軟件架構(gòu)中常見(jiàn)問(wèn)題的通用、可重用的解決方案。架構(gòu)模式類似于軟件設(shè)計(jì)模式,但范圍更廣。
分層模式
該模式可用于構(gòu)建可分解為子任務(wù)組的程序,其中每個(gè)都處于特定的抽象級(jí)別。每一次都向更高層提供服務(wù)。
一般信息系統(tǒng)中最常見(jiàn)的4層劃分如下:
Presentation layer?表示層(也就是UI層) Application layer?應(yīng)用層(也就是服務(wù)層) Business logic layer?業(yè)務(wù)邏輯層(也就是領(lǐng)域?qū)樱?/section> Data access layer?數(shù)據(jù)訪問(wèn)層(也就是數(shù)據(jù)持久層)
應(yīng)用
一般桌面應(yīng)用程序 電子商務(wù)Web應(yīng)用程序

客戶端-服務(wù)器模式
應(yīng)用
在線應(yīng)用程序,如電子郵件、文件共享和銀行業(yè)務(wù)等

?主從模式?
在數(shù)據(jù)庫(kù)復(fù)制中,主數(shù)據(jù)庫(kù)被視作權(quán)威數(shù)據(jù)源,而從數(shù)據(jù)庫(kù)與其保持同步 連接到計(jì)算機(jī)系統(tǒng)總線上的外圍設(shè)備(主驅(qū)動(dòng)器和從驅(qū)動(dòng)器)

?管道過(guò)濾模式
應(yīng)用
編譯器。依次使用不同的過(guò)濾器執(zhí)行詞法分析、解析、語(yǔ)法分析和代碼生成 生物信息學(xué)中的工作流程

?Broker模式
服務(wù)器將它們的功能(服務(wù)和特征等)發(fā)布到代理,客戶端向代理請(qǐng)求服務(wù),然后代理根據(jù)其注冊(cè)表將客戶端請(qǐng)求轉(zhuǎn)發(fā)給合適的服務(wù)。
應(yīng)用
消息代理軟件,如?Apache ActiveMQ,?Apache Kafka,?RabbitMQ?和?JBoss Messaging.

P2P模式
應(yīng)用
文件共享網(wǎng)絡(luò),如Gnutella?和?G2 多媒體協(xié)議,如P2PTV?和?PDTP 基于加密貨幣的產(chǎn)品,如比特幣和區(qū)塊鏈

事物總線模式
應(yīng)用
安卓開(kāi)發(fā) 通知服務(wù)

?MVC模式?
模型——包含核心功能和數(shù)據(jù) 視圖——向用戶顯示信息(可以定義多個(gè)視圖) 控制器——處理用戶的輸入
應(yīng)用
主流編程語(yǔ)言的互聯(lián)網(wǎng)應(yīng)用架構(gòu) 網(wǎng)絡(luò)框架,如Django?和?Rails.

黑板模式
黑板—— 一個(gè)結(jié)構(gòu)化的全局內(nèi)存,包含解決方案領(lǐng)域的對(duì)象 知識(shí)源——具有自身含義的專業(yè)模塊 控制組件——選擇、配置和執(zhí)行模塊
應(yīng)用
語(yǔ)音識(shí)別 車輛識(shí)別與跟蹤 蛋白質(zhì)結(jié)構(gòu)鑒定 聲吶信號(hào)解釋

?解釋器模式
應(yīng)用
數(shù)據(jù)庫(kù)查詢語(yǔ)言,如SQL 用于描述通信協(xié)議的語(yǔ)言

架構(gòu)模式對(duì)比
| 模式 | 優(yōu)點(diǎn) | 缺點(diǎn) |
分層結(jié)果更容易進(jìn)行標(biāo)準(zhǔn)化,因?yàn)榭梢郧逦囟x每個(gè)層級(jí) 層級(jí)內(nèi)的修改不會(huì)影響其它層 | 某些場(chǎng)景下,需要跳過(guò)其中一些分層 | |
因?yàn)椴煌蛻舳擞胁煌问剑M(jìn)程間通信會(huì)造成很大負(fù)載 | ||
主從模塊間的通信延遲可能是一個(gè)問(wèn)題,尤其在實(shí)時(shí)系統(tǒng)中。 | ||
容易添加過(guò)濾器,系統(tǒng)很容易擴(kuò)展; 過(guò)濾器可重用,可以通過(guò)重新組合已有的過(guò)濾器來(lái)創(chuàng)建不同的管道流。 | 從一個(gè)過(guò)濾器傳遞到另一個(gè)時(shí),存在數(shù)據(jù)轉(zhuǎn)換的負(fù)載 | |
對(duì)任意節(jié)點(diǎn)的失敗都有高度穩(wěn)定性; 在資源和計(jì)算能力方面具有高度可伸縮性 | 很難保證安全; 性能取決于節(jié)點(diǎn)的數(shù)量 | |
對(duì)于高度分布式應(yīng)用很有效 | ||
很容易擴(kuò)展數(shù)據(jù)空間中的結(jié)構(gòu) | 可能需要同步機(jī)制和訪問(wèn)控制 | |
有利于終端用戶的可編程性; 增強(qiáng)了靈活性,因?yàn)樘鎿Q一個(gè)解釋程序很容易 |
評(píng)論
圖片
表情
