什么是架構(gòu)模式?
大型的企業(yè)級(jí)系統(tǒng)是如何設(shè)計(jì)的呢?想必大家都曾經(jīng)有過(guò)這樣的疑惑。大型軟件開發(fā)前,我們必須選擇一種合適的架構(gòu),它既要提供我們想要的功能,質(zhì)量也要過(guò)關(guān)。因此,在應(yīng)用不同的架構(gòu)之前,我們有必要熟悉一下這些架構(gòu)。
什么是架構(gòu)模式?
根據(jù)維基百科,
針對(duì)軟件架構(gòu)中給定上下文的常見(jiàn)問(wèn)題,架構(gòu)模式是一種通用的、可復(fù)用的解決方案。它與軟件設(shè)計(jì)模式相似,但范圍更廣。
在這篇文章中,我將簡(jiǎn)要地說(shuō)明一下10種常用的架構(gòu)模式,以及它們的用法和利弊。
分層模式
客戶端 – 服務(wù)端模式(cs模式)
主從模式
管道過(guò)濾器模式
代理模式
點(diǎn)對(duì)點(diǎn)模式
事件總線模式
模型-視圖-控制器模式(MVC模式)
黑板模式
解釋器模式
1. 分層模式
這種模式可用于構(gòu)建能分解成多組子任務(wù)的程序,每個(gè)子任務(wù)處在特定的抽象級(jí)別中。每一層為更高一層提供服務(wù)。
以下是最常見(jiàn)的通用信息系統(tǒng)中的4個(gè)層次。
表示層(亦稱為 UI層)
應(yīng)用層(亦稱為 服務(wù)層)
業(yè)務(wù)邏輯層(亦稱為 領(lǐng)域?qū)?
數(shù)據(jù)訪問(wèn)層(亦稱為 持久層)
用法
通用桌面應(yīng)用
電子商務(wù)web應(yīng)用
2. 客戶端-服務(wù)端模式
該模式包含一個(gè)服務(wù)端和多個(gè)客戶端。服務(wù)端組件給多個(gè)客戶端組件提供服務(wù)??蛻舳讼蚍?wù)端請(qǐng)求服務(wù),服務(wù)端提供相關(guān)的服務(wù)。此外,服務(wù)端會(huì)持續(xù)監(jiān)聽(tīng)客戶端的請(qǐng)求。
用法
在線應(yīng)用,例如電子郵件、文件共享和存儲(chǔ)。
3. 主從模式
該模式包含兩部分;主和從。主組件給相同的從屬組件分配工作,并根據(jù)從 從屬組件 中返回的結(jié)果計(jì)算最終結(jié)果.
用法
主服務(wù)器是權(quán)威來(lái)源,從屬數(shù)據(jù)庫(kù)與其進(jìn)行同步。
在計(jì)算機(jī)系統(tǒng)中,外圍設(shè)備連接到總線中(主驅(qū)動(dòng)和從屬驅(qū)動(dòng))。
4. 管道過(guò)濾模式
該模式可用于構(gòu)建生成和處理數(shù)據(jù)流的系統(tǒng)。每個(gè)處理步驟包含在一個(gè)過(guò)濾組件中。待處理的數(shù)據(jù)通過(guò)管道傳遞。這些管道可用于數(shù)據(jù)緩存或同步。
用法
編譯器。連續(xù)的過(guò)濾器執(zhí)行詞法分析,解析,語(yǔ)意分析,和代碼生成。
生物信息學(xué)中的工作流。
5. 代理模式
該模式用于構(gòu)建伴有解耦組件的分布式系統(tǒng)。這些組件通過(guò)遠(yuǎn)程服務(wù)調(diào)用來(lái)和彼此互動(dòng)。代理組件負(fù)責(zé)協(xié)調(diào)組件之間的通信。
服務(wù)器將其功能(服務(wù)和特性)發(fā)布到代理。客戶端從代理請(qǐng)求服務(wù),代理根據(jù)注冊(cè)表把客戶端重定向到合適的服務(wù)。
用法
消息代理服務(wù),例如Apache ActiveMQ, Apache Kafka,RabbitMQ和JBoss Messaging。
6. 點(diǎn)對(duì)點(diǎn)模式
在該模式中,相同的組件被稱為對(duì)等組件。對(duì)等體既可以作為客戶端,請(qǐng)求其他對(duì)等體的服務(wù),也可以作為服務(wù)端,為其他對(duì)等體提供服務(wù)。一個(gè)對(duì)等體可以作為客戶端、或者服務(wù)端、或者兼任兩者,它能隨著時(shí)間動(dòng)態(tài)變更自己的角色。
用法
文件共享網(wǎng)絡(luò),例如Gnutella 和 G2)
多媒體協(xié)議,例如P2PTV 和 PDTP。
7. 事件總線模式
該模式主要處理事件,并且有4個(gè)主要組件:事件源,事件監(jiān)聽(tīng)者,事件通道和事件總線。事件源發(fā)布消息到事件總線上的特定通道。監(jiān)聽(tīng)者訂閱特定通道。如果監(jiān)聽(tīng)者訂閱的通道有消息發(fā)布,那么監(jiān)聽(tīng)者就會(huì)得到通知。
用法
安卓開發(fā)
通知服務(wù)
8. 模型-視圖-控制器模式(MVC模式)
該模式亦被稱為MVC模式,它將交互式應(yīng)用分成3個(gè)部分,
模型 – 包含核心功能和數(shù)據(jù)
視圖 – 給用戶展示信息(可能不止一個(gè)視圖)
控制器 – 處理用戶的輸入 這樣做的目的是將 信息的內(nèi)部表示 和 信息呈現(xiàn)給用戶并且從用戶獲取的方式 分離開。這樣能解耦組件并且有效重用代碼。
用法
主要編程語(yǔ)言的萬(wàn)維網(wǎng)應(yīng)用的體系結(jié)構(gòu)。
web框架,例如Django和Rails。
9. 黑板模式
該模式可用于沒(méi)有已知確定性解決方案策略的問(wèn)題。黑板模式由3個(gè)主要組件組成。
黑板 – 一塊結(jié)構(gòu)化的全局內(nèi)存,包含解決方案空間的對(duì)象。
知識(shí)源 – 具有各自代表性的專業(yè)模塊。
控制組件 – 選擇,配置和執(zhí)行模塊。 所有組件都可以訪問(wèn)黑板。組件可能會(huì)生產(chǎn)添加進(jìn)黑板的新數(shù)據(jù)對(duì)象。組件在黑板上尋找特定類型的數(shù)據(jù),并且可能利用已有的知識(shí)源,通過(guò)模式匹配的方式來(lái)尋找數(shù)據(jù)。
用法
語(yǔ)音識(shí)別
車輛識(shí)別和追蹤
蛋白質(zhì)結(jié)構(gòu)識(shí)別
海納信號(hào)解析
10. 解釋器模式
該模式用于設(shè)計(jì) 用來(lái)解釋專用語(yǔ)言寫成的程序 的組件。它主要指明如何評(píng)估程序的行,即用特定語(yǔ)言編寫的語(yǔ)句或表達(dá)式?;鞠敕ㄊ菫檎Z(yǔ)言的每個(gè)符號(hào)設(shè)置一個(gè)類。
用法
數(shù)據(jù)庫(kù)查詢語(yǔ)言,例如SQL。
計(jì)算機(jī)語(yǔ)言用來(lái)描述通訊協(xié)議。