新聞中心
在去年底召開的全球軟件架構(gòu)峰會(huì)(Global Software Architecture Summit)上,全球各界開發(fā)人員齊聚一堂,廣泛地討論了各種業(yè)界常見的軟件架構(gòu)模式。在此,我為您梳理并總結(jié)這些軟件架構(gòu)師給我們帶來的精彩見解。

成都創(chuàng)新互聯(lián)公司主營禹王臺(tái)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),禹王臺(tái)h5小程序定制開發(fā)搭建,禹王臺(tái)網(wǎng)站營銷推廣歡迎禹王臺(tái)等地區(qū)企業(yè)咨詢
首先,什么是軟件架構(gòu)模式?
架構(gòu)模式是那些由軟件架構(gòu)師通過持續(xù)實(shí)踐,進(jìn)而總結(jié)出的、過往已驗(yàn)證的、優(yōu)秀設(shè)計(jì)架構(gòu)。它們往往能夠被重復(fù)地使用到其他項(xiàng)目或領(lǐng)域之中。更具體地說,架構(gòu)模式是需要在實(shí)踐中反復(fù)發(fā)掘的一組設(shè)計(jì)決策。它具有明確定義的屬性,以及一套可以被重復(fù)使用與描述的架構(gòu)。
其實(shí),開發(fā)軟件架構(gòu)可以被看作是針對(duì)模式進(jìn)行選擇、定制和組合的一整套過程。而軟件架構(gòu)師的任務(wù)就是要決定:如何實(shí)例化模式,如何使其與特定的上下文、以及問題的約束相適應(yīng)。我們將在下文中進(jìn)行詳細(xì)的討論。
Mark Richards在其著作--《軟件架構(gòu)模式》一書中主要介紹了5種軟件架構(gòu)模式,它們分別是:微內(nèi)核、微服務(wù)、分層架構(gòu)、基于事件(事件驅(qū)動(dòng))和基于空間。下面我們將根據(jù)這個(gè)順序逐一進(jìn)行介紹。
1.微內(nèi)核模式
微內(nèi)核架構(gòu)模式也稱為插件架構(gòu)模式。它通常是在軟件團(tuán)隊(duì)創(chuàng)建具有可互換性組件(interchangeable components)的系統(tǒng)時(shí),被使用到。
該模式主要適用于那些必須能夠適應(yīng)不斷變化需求的軟件系統(tǒng)。微內(nèi)核模式能夠從擴(kuò)展功能、以及特定于客戶的部件中,分離出最小的功能核心。作為一種套接字(socket),它能夠插入到各種擴(kuò)展之中,并協(xié)調(diào)其相互之間的協(xié)作關(guān)系。
業(yè)界通常認(rèn)為:微內(nèi)核架構(gòu)模式是一種可被用于實(shí)施基于產(chǎn)品的應(yīng)用程序的自然模式。此處所謂基于產(chǎn)品的應(yīng)用程序,是一種打包的應(yīng)用程序,可以作為典型的第三方產(chǎn)品版本被下載。當(dāng)然,許多公司也會(huì)據(jù)此來開發(fā)和發(fā)布其內(nèi)部的業(yè)務(wù)應(yīng)用,例如:各種軟件產(chǎn)品、版本、發(fā)布說明、以及可插入的功能等。
微內(nèi)核架構(gòu)模式允許您將其他應(yīng)用程序的功能作為插件,添加到核心的應(yīng)用程序上,進(jìn)而提供可擴(kuò)展性、以及功能上的分離(隔離)。
微內(nèi)核架構(gòu)模式通常由兩種類型的架構(gòu)組件所組成:核心系統(tǒng)和各種插件模塊。我們需要將應(yīng)用程序的邏輯,在各個(gè)獨(dú)立的插件模塊和基礎(chǔ)核心系統(tǒng)之間進(jìn)行劃分,以提供基于應(yīng)用功能,和自定義處理邏輯的可擴(kuò)展性、靈活性和隔離性。在傳統(tǒng)概念上,微內(nèi)核架構(gòu)模式的核心系統(tǒng),僅包含那些系統(tǒng)運(yùn)行所需的最少功能。
微內(nèi)核架構(gòu)的最佳示例是Eclipse IDE。通過下載基本的Eclipse產(chǎn)品,您只會(huì)獲得一個(gè)編輯器。而只有在您添加了各種插件之后,它才能成為一個(gè)高度可定制的、實(shí)用的產(chǎn)品。
優(yōu)勢:
- 具有極大的靈活性和可擴(kuò)展性。
- 在某些實(shí)現(xiàn)場景中,允許應(yīng)用程序在運(yùn)行的時(shí)候被添加插件。
- 具有良好的可移植性。
- 易于部署。
- 能夠快速地響應(yīng)不斷變化的環(huán)境。
- 插件模塊既可以單獨(dú)地被測試,又可以由核心系統(tǒng)來輕松地進(jìn)行模擬,以演示或原型化某項(xiàng)特定的功能,進(jìn)而達(dá)到對(duì)核心系統(tǒng)的盡少、甚至不做修改。
- 由于您可以通過自定義和簡化應(yīng)用程序,來僅包括那些必需的功能,因此它能夠提供優(yōu)越的性能。
適合性:
- 那些需要從不同來源獲取數(shù)據(jù),并在轉(zhuǎn)換數(shù)據(jù)之后寫入不同目標(biāo)的應(yīng)用程序。
- 工作流程類應(yīng)用程序。
- 任務(wù)與作業(yè)計(jì)劃類應(yīng)用程序。
2.微服務(wù)模式
當(dāng)您將應(yīng)用程序作為一組微服務(wù)進(jìn)行編寫時(shí),實(shí)際上是在編寫可以協(xié)同工作的多個(gè)微型應(yīng)用程序。每個(gè)微服務(wù)都有自己的“職責(zé)”,團(tuán)隊(duì)可以獨(dú)立于其他微服務(wù)進(jìn)行開發(fā)。他們之間唯一的依賴便是溝通。當(dāng)微服務(wù)彼此進(jìn)行通信時(shí),您必須確保它們之間發(fā)送的消息能夠向后兼容。
優(yōu)勢:
- 您可以單獨(dú)地編寫,維護(hù)和部署每一個(gè)微服務(wù)。
- 您可以靈活地僅擴(kuò)展那些需要的微服務(wù)。
- 由于應(yīng)用程序的各個(gè)部分較小,并且與其他部分的耦合較寬松,因此您可以輕松地進(jìn)行重寫。
- 新的團(tuán)隊(duì)成員很容易快速上手。
- 能夠使得應(yīng)用程序易于被理解和修改。
- 通過提供良好的可維護(hù)性和可測試性,以實(shí)現(xiàn)快速且頻繁的開發(fā)和部署。
- 團(tuán)隊(duì)無需與其他團(tuán)隊(duì)協(xié)調(diào),便可獨(dú)立地部署其服務(wù)。
適合性:
- 適合帶有小型組件的站點(diǎn)。
- 有明確邊界的企業(yè)級(jí)數(shù)據(jù)中心。
- 快速發(fā)展的新業(yè)務(wù)和Web應(yīng)用。
- 具有遍布全球的開發(fā)團(tuán)隊(duì)。
3.分層架構(gòu)模式
最常見的架構(gòu)模式當(dāng)屬分層架構(gòu)模式。它是我們用來設(shè)計(jì)大多數(shù)軟件的傳統(tǒng)方法,同樣有具有一定的獨(dú)立性。分層架構(gòu)模式是一種多層模式,每個(gè)層面上都有多個(gè)組件。這就意味著所有的組件雖然是互聯(lián)的,但是彼此之間并不依賴。在應(yīng)用程序中,分層架構(gòu)模式的每一層都有特定的角色和職責(zé)。例如:表示層將負(fù)責(zé)處理所有用戶界面和瀏覽器之間的通信邏輯,而業(yè)務(wù)層將負(fù)責(zé)執(zhí)行與請(qǐng)求相關(guān)的特定業(yè)務(wù)規(guī)則。
分層架構(gòu)模式的主要特點(diǎn)在于各個(gè)組件各司其職,相互分離。也就是說,某個(gè)特定層面上的組件,僅會(huì)處理與該層有關(guān)的邏輯。
優(yōu)勢:
- 由于在該架構(gòu)中,組件只屬于某個(gè)特定層面,而其他層面可以被模擬出來,因此該模式具有良好的易測試性。
- 由于該模式實(shí)現(xiàn)起來并不太復(fù)雜,而且大多數(shù)公司都能夠通過逐層分離的功能集,來開發(fā)應(yīng)用程序,因此它非常易于被開發(fā),當(dāng)然也就成為了大多數(shù)業(yè)務(wù)應(yīng)用的自然選擇。
- 具有可維護(hù)性。
- 易于分配單獨(dú)的“角色”。
- 方便對(duì)不同層面進(jìn)行單獨(dú)地更新與增強(qiáng)。
適合性:
- 標(biāo)準(zhǔn)化的業(yè)務(wù)線應(yīng)用程序,且在功能上不限于CRUD(增刪改查)操作。
- 需要快速構(gòu)建的新應(yīng)用。
- 團(tuán)隊(duì)中有并不了解其他架構(gòu)、或經(jīng)驗(yàn)不足的開發(fā)人員。
- 那些需要具有嚴(yán)格的可維護(hù)性和可測試性的應(yīng)用。
4.基于事件(事件驅(qū)動(dòng))的模式
這是用于開發(fā)具有高度可擴(kuò)展性系統(tǒng)的最常見分布式異步架構(gòu)。該架構(gòu)由那些可用于監(jiān)聽事件,并能夠異步處理事件的組件所組成。事件驅(qū)動(dòng)類架構(gòu)構(gòu)建出一個(gè)能夠接收所有數(shù)據(jù)的中央單元。該單元可以被委托給那些具有處理特定類型能力的單獨(dú)模塊。
優(yōu)勢:
- 容易適應(yīng)復(fù)雜且混亂的環(huán)境。
- 可被輕松地?cái)U(kuò)展。
- 當(dāng)出現(xiàn)新的事件類型時(shí),能夠方便地進(jìn)行擴(kuò)展。
適合性:
- 那些具有異步數(shù)據(jù)流的異步系統(tǒng)。
- 各種用戶界面。
5.給予空間的模式
基于空間的架構(gòu)模式被專門設(shè)計(jì)為解決那些可擴(kuò)展性和并發(fā)性的問題。對(duì)于那些具有不定因素和不可測并發(fā)用戶數(shù)的應(yīng)用來說,它同樣也是一種非常實(shí)用的架構(gòu)模式。該模式通過消除對(duì)中央數(shù)據(jù)庫的約束,以及使用可復(fù)制的內(nèi)存中數(shù)據(jù)格(data grids),來實(shí)現(xiàn)良好的可擴(kuò)展性。
此外,基于空間的架構(gòu)可以通過在多個(gè)服務(wù)器之間進(jìn)行拆分處理與存儲(chǔ),以避免高負(fù)載下的功能性崩潰。
優(yōu)勢:
- 能夠快速地響應(yīng)不斷變化的環(huán)境。
- 盡管該架構(gòu)通常無法實(shí)現(xiàn)解耦和分布式,但它是動(dòng)態(tài)的。那些基于云端的復(fù)雜工具,能夠?qū)?yīng)用程序輕松“推送”到服務(wù)器處,以簡化部署。
- 可以通過內(nèi)存中的數(shù)據(jù)訪問,以及該模式中內(nèi)置的緩存機(jī)制,來達(dá)到高性能。
- 由于較小地、甚至并不依賴于集中式數(shù)據(jù)庫,因此該模式具有非常好的可擴(kuò)展性。
適合性:
- 具有大體量數(shù)據(jù)的場景,例如:點(diǎn)擊流(clickstreams)和用戶日志。
- 低價(jià)值數(shù)據(jù)的偶爾丟失并不會(huì)造成嚴(yán)重后果的場景。
- 社交網(wǎng)絡(luò)環(huán)境。
總的說來,上述介紹的五種架構(gòu)模式各有自己的優(yōu)勢和適用環(huán)境。您可以在程序設(shè)計(jì)與項(xiàng)目中,按照實(shí)際需求選擇不同的軟件架構(gòu)模式,并實(shí)現(xiàn)復(fù)用。
原標(biāo)題:5 Major Software Architecture Patterns,作者: Ekaterina Novoseltseva
【譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為.com】
網(wǎng)頁名稱:五大主流軟件架構(gòu)模式
鏈接分享:http://www.fisionsoft.com.cn/article/dhpggop.html


咨詢
建站咨詢
