溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

發(fā)布時(shí)間:2021-10-19 09:39:11 來源:億速云 閱讀:133 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些”吧!

架構(gòu)模式是在給定上下文中解決軟件架構(gòu)中常見問題的通用,可重用的解決方案。

模式是上下文中問題的解決方案。

如今,許多程序員仍然對(duì)體系結(jié)構(gòu)模式之間的差異感到困惑,甚至對(duì)此并不了解。

讓我向您解釋…!

  • 分層架構(gòu)

  • 管道和過濾器

  • 客戶端服務(wù)器

  • 模型視圖控制器

  • 事件驅(qū)動(dòng)架構(gòu)

  • 微服務(wù)架構(gòu)

分層架構(gòu)

最常見的架構(gòu)模式是分層架構(gòu)或稱為n層架構(gòu)。大多數(shù)軟件架構(gòu)師,設(shè)計(jì)師,開發(fā)人員都廣為人知。盡管對(duì)于必須存在的層的數(shù)量和類型沒有特別的限制,但是大多數(shù)分層體系結(jié)構(gòu)由四個(gè)層組成:表示,業(yè)務(wù),持久性和數(shù)據(jù)庫,如下所示。

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

> an popular example of n-tier architecture

語境

所有復(fù)雜的系統(tǒng)都需要獨(dú)立開發(fā)和演化系統(tǒng)的各個(gè)部分。由于這個(gè)原因,系統(tǒng)的開發(fā)人員需要明確且有據(jù)可查的關(guān)注點(diǎn)分離,以便可以獨(dú)立開發(fā)和維護(hù)系統(tǒng)的模塊。

問題

需要對(duì)軟件進(jìn)行分段,以便可以獨(dú)立開發(fā)和開發(fā)模塊,而各部分之間的交互很少,從而支持可移植性,可修改性和重用性。

解決方案

為了實(shí)現(xiàn)關(guān)注點(diǎn)的分離,分層模式將軟件分為稱為層的單元。每一層都是一組模塊,這些模塊提供了一套緊密的服務(wù)。用法必須是單向的。層完全對(duì)一組軟件進(jìn)行分區(qū),并且每個(gè)分區(qū)都通過公共接口公開。

  • 第一個(gè)概念是每個(gè)層都有特定的角色和責(zé)任。例如,表示層將負(fù)責(zé)處理所有UI。因?yàn)榉謱蛹軜?gòu)內(nèi)關(guān)注點(diǎn)的分離使建立有效的角色和責(zé)任變得容易。

  • 在第二個(gè)概念上,分層體系結(jié)構(gòu)模式是技術(shù)分區(qū)的體系結(jié)構(gòu),而不是域分區(qū)的體系結(jié)構(gòu)。它們是組件組,而不是按域劃分。

  • 最后一個(gè)概念是分層體系結(jié)構(gòu)中的每個(gè)層都被標(biāo)記為封閉或開放。封閉層意味著請(qǐng)求從一層移到另一層,它必須經(jīng)過它下面的一層才能到達(dá)該層下面的下一層。該請(qǐng)求不能跳過任何層。  > Closed layers and request access

弱點(diǎn)

層會(huì)導(dǎo)致性能下降。該模式無法將其自身應(yīng)用于高性能應(yīng)用程序,因?yàn)楸闅v體系結(jié)構(gòu)的多個(gè)層來滿足業(yè)務(wù)請(qǐng)求效率不高。

層的增加還增加了系統(tǒng)的前期成本和復(fù)雜性。

用法

對(duì)于小型,簡單的應(yīng)用程序或網(wǎng)站,我們應(yīng)該使用此樣式。對(duì)于預(yù)算和時(shí)間緊迫的情況,這是一個(gè)不錯(cuò)的選擇。

多層模式

語境

在分布式部署中,通常需要將系統(tǒng)的基礎(chǔ)結(jié)構(gòu)分布到不同的子集中。

問題

我們?nèi)绾螌⑾到y(tǒng)劃分為多個(gè)在計(jì)算上獨(dú)立的執(zhí)行結(jié)構(gòu):通過某些通信介質(zhì)連接的軟件和硬件組?

解決方案

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

> a multi-tier example — consumer website J2EE

許多系統(tǒng)的執(zhí)行結(jié)構(gòu)被組織為一組組件的邏輯分組。每個(gè)分組稱為一個(gè)層。

弱點(diǎn)

大量的前期成本和復(fù)雜性。

用法

用于分布式系統(tǒng)。

管道和過濾器

反復(fù)出現(xiàn)的軟件體系結(jié)構(gòu)中的一種模式是管道過濾器模式。

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

> the pipe filter style

語境

需要許多系統(tǒng)從輸入到輸出轉(zhuǎn)換離散數(shù)據(jù)項(xiàng)的流。實(shí)際上,許多類型的轉(zhuǎn)換會(huì)重復(fù)發(fā)生,因此,需要將它們創(chuàng)建為獨(dú)立的,可重復(fù)使用的部分。

問題

此類系統(tǒng)需要分為具有簡單,通用交互機(jī)制的可重用,松散耦合的組件。這樣,它們可以靈活地彼此組合。通用且松散耦合的組件易于重用。獨(dú)立的組件可以并行執(zhí)行。

解決方案

這種架構(gòu)中的管道形成了過濾器之間的通信通道。第一個(gè)概念是每條管道都是無方向性的,并且出于性能原因是點(diǎn)對(duì)點(diǎn)的,接受來自一個(gè)源的輸入,并始終將輸出定向到另一個(gè)。

此樣式中存在四種類型的過濾器,如下所示。

  • 生產(chǎn)者(來源):過程的起點(diǎn)。

  • 轉(zhuǎn)換器(映射):對(duì)部分或全部數(shù)據(jù)執(zhí)行轉(zhuǎn)換。

  • 測試員(減少):測試一個(gè)或多個(gè)條件。

  • 消費(fèi)者(接收者):終點(diǎn)。

弱點(diǎn)

由于交互式系統(tǒng)的轉(zhuǎn)換特性,因此不是很好的選擇。

過多的解析和未解析會(huì)導(dǎo)致性能損失并增加編寫過濾器本身的復(fù)雜性。

用法

管道過濾器體系結(jié)構(gòu)用于各種應(yīng)用程序中,尤其是有助于簡單單向處理的任務(wù),例如EDI,ETL工具。

編譯器:連續(xù)的過濾器執(zhí)行詞法分析,解析,語義分析和代碼生成。

客戶端服務(wù)器

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

語境

有許多分布式客戶端希望訪問的共享資源和服務(wù),我們希望對(duì)其進(jìn)行控制,以控制訪問或服務(wù)質(zhì)量。

問題

通過管理一組共享資源和服務(wù),我們可以通過排除常見服務(wù)并必須在單個(gè)位置或少數(shù)位置中對(duì)它們進(jìn)行修改來提高可修改性和重用性。我們希望通過集中控制這些資源和服務(wù),同時(shí)在多個(gè)物理服務(wù)器之間分配資源本身來提高可伸縮性和可用性。

解決方案

在客戶端-服務(wù)器樣式中,組件和連接器具有特定的行為。

  • 稱為“客戶端”的組件將請(qǐng)求發(fā)送到稱為“服務(wù)器”的組件,并等待答復(fù)。

  • 服務(wù)器組件從客戶端接收請(qǐng)求,然后向其發(fā)送回復(fù)。

弱點(diǎn)

服務(wù)器可能是性能瓶頸和單點(diǎn)故障。

構(gòu)建系統(tǒng)后,關(guān)于在何處定位功能(在客戶端還是在服務(wù)器中)的決策通常很復(fù)雜,更改成本很高。

用法

我們可以使用客戶端-服務(wù)器樣式來建模系統(tǒng)的一部分,該系統(tǒng)具有許多組件,這些組件將請(qǐng)求(客戶端)發(fā)送到另一個(gè)提供服務(wù)的組件(服務(wù)器):在線應(yīng)用程序,例如電子郵件,文檔共享和銀行業(yè)務(wù)。

模型視圖控制器 MVC

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

語境

用戶界面通常是交互式應(yīng)用程序中最經(jīng)常修改的部分。用戶通常希望從不同的角度查看數(shù)據(jù),例如條形圖或餅圖。這些表示均應(yīng)反映數(shù)據(jù)的當(dāng)前狀態(tài)。

問題

如何將用戶界面功能與應(yīng)用程序功能區(qū)分開,又如何對(duì)用戶輸入或底層應(yīng)用程序數(shù)據(jù)的更改做出響應(yīng)?

當(dāng)基礎(chǔ)應(yīng)用程序數(shù)據(jù)更改時(shí),如何創(chuàng)建,維護(hù)和協(xié)調(diào)用戶界面的多個(gè)視圖?

解決方案

模型視圖控制器(MVC)模式將應(yīng)用程序功能分為以下三種組件。

  • 一個(gè)模型,其中包含應(yīng)用程序的數(shù)據(jù)。

  • 視圖,顯示基礎(chǔ)數(shù)據(jù)的某些部分并與用戶進(jìn)行交互。

  • 控制器,它在模型和視圖之間進(jìn)行中介,并管理狀態(tài)更改的通知。

弱點(diǎn)

對(duì)于簡單的用戶界面,復(fù)雜性可能不值得。

模型,視圖和控制器的抽象可能不適用于某些用戶界面工具箱。

用法

MVC是一種架構(gòu)模式,通常在開發(fā)用戶界面時(shí)用于Web移動(dòng)應(yīng)用程序。

事件驅(qū)動(dòng)架構(gòu)

語境

需要提供計(jì)算和信息資源來處理傳入的獨(dú)立異步應(yīng)用程序生成的事件,其方式可以隨需求的增加而擴(kuò)展。

問題

構(gòu)建可以為與事件關(guān)聯(lián)的異步到達(dá)消息提供服務(wù)的分布式系統(tǒng),并且該分布式系統(tǒng)可以從小型和簡單擴(kuò)展到大型和復(fù)雜。

解決方案

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

部署獨(dú)立的事件流程/處理器以進(jìn)行事件處理。到達(dá)事件排隊(duì)。調(diào)度程序從隊(duì)列中提取事件,并根據(jù)調(diào)度策略將它們分配給適當(dāng)?shù)氖录幚沓绦颉?/p>

弱點(diǎn)

性能和錯(cuò)誤恢復(fù)可能是個(gè)問題。

用法

使用此方法的電子商務(wù)應(yīng)用程序?qū)匆韵路绞焦ぷ鳎河唵畏?wù)以掛起狀態(tài)創(chuàng)建訂單并發(fā)布OrderCreated事件。

  • 客戶服務(wù)收到事件并嘗試為該訂單保留信用。然后,它發(fā)布“保留信用”事件或“ CreditLimitExceeded”事件。

  • 訂單服務(wù)從客戶服務(wù)接收事件,并將訂單狀態(tài)更改為已批準(zhǔn)或已取消

微服務(wù)架構(gòu)

語境

部署支持多種瀏覽器和本機(jī)移動(dòng)客戶端的基于服務(wù)器的企業(yè)應(yīng)用程序。該應(yīng)用程序通過執(zhí)行業(yè)務(wù)邏輯,訪問數(shù)據(jù)庫,與其他系統(tǒng)交換消息并返回響應(yīng)來處理客戶端請(qǐng)求。該應(yīng)用程序可能會(huì)公開一個(gè)第三方API。

問題

整體應(yīng)用程序可能變得太大和復(fù)雜,以致于無法有效支持,而部署則無法實(shí)現(xiàn)最佳的分布式資源利用,例如在云環(huán)境中。

解決方案

軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些

將應(yīng)用程序構(gòu)建為服務(wù)套件。每個(gè)服務(wù)都可以獨(dú)立部署和擴(kuò)展,并具有自己的API邊界。可以用不同的編程語言編寫不同的服務(wù),管理自己的數(shù)據(jù)庫,并由不同的團(tuán)隊(duì)開發(fā)。

弱點(diǎn)

系統(tǒng)必須設(shè)計(jì)為能夠承受需要更多系統(tǒng)監(jiān)視的服務(wù)故障。服務(wù)編排和事件協(xié)作開銷。

我們還需要更多的內(nèi)存。

用法

許多用例適用于微服務(wù)架構(gòu),尤其是那些涉及大量數(shù)據(jù)管道的用例。例如,基于微服務(wù)的系統(tǒng)非常適合公司零售商店銷售的報(bào)告系統(tǒng)。數(shù)據(jù)準(zhǔn)備過程的每個(gè)步驟都將由微服務(wù)處理:數(shù)據(jù)收集,清理,規(guī)范化,充實(shí),匯總,報(bào)告等。

感謝各位的閱讀,以上就是“軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)軟件構(gòu)架之碼農(nóng)需要了解的軟件構(gòu)架模式有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI