- 微服務(wù)架構(gòu)原理與開發(fā)實(shí)戰(zhàn)
- 張剛編著
- 888字
- 2024-01-22 18:20:44
1.3.3 經(jīng)典的MVC架構(gòu)模式
本書中MVC并不是重點(diǎn),但談到單體式架構(gòu),就不得不介紹MVC,早在1978年MVC的概念就被提出,可以說MVC的出現(xiàn)極大地延緩了單體式架構(gòu)的衰敗時(shí)間,它雖然不能從本質(zhì)上改變單體式架構(gòu)本身的缺陷,但在很大程度上確實(shí)改善了單體式架構(gòu)代碼混亂、難以維護(hù)的問題。
MVC將程序簡(jiǎn)單地劃分為3層。
(1)模型層:用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法。模型有對(duì)數(shù)據(jù)直接訪問的權(quán)力,如對(duì)數(shù)據(jù)庫(kù)的訪問。模型不依賴視圖和控制器,即模型不關(guān)心它會(huì)被如何顯示或如何被操作。除此之外,模型還負(fù)責(zé)具體的業(yè)務(wù)邏輯和算法的編寫。
(2)視圖層:能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示,即將模型處理的數(shù)據(jù)通過圖形界面的形式進(jìn)行展示,在視圖中一般沒有程序上的邏輯。
(3)控制層:負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求或?qū)φ?qǐng)求的處理,起到不同層面之間的組織作用,用于控制應(yīng)用程序的流程、頁(yè)面的跳轉(zhuǎn)等。
MVC的各層之間保持相對(duì)的獨(dú)立,視圖不用關(guān)心用戶的請(qǐng)求和數(shù)據(jù)的存儲(chǔ),通過不同的控制器可以連接不同的模型和視圖來完成用戶的需求。多個(gè)視圖可以共用一個(gè)模型,它實(shí)現(xiàn)了一種動(dòng)態(tài)的程序設(shè)計(jì),使后續(xù)對(duì)程序的修改和擴(kuò)展簡(jiǎn)化,并且使程序某一部分的重復(fù)利用成為可能。
MVC各組件之間的具體協(xié)作如圖1.6所示。

圖1.6 MVC協(xié)作示意圖
由圖1.6可以看出,MVC可以讓單體式架構(gòu)的層次更加簡(jiǎn)單、清晰,代碼職責(zé)更加獨(dú)立,雖然不能改變單體式架構(gòu)本身的結(jié)構(gòu),但也大大提升了項(xiàng)目代碼的可維護(hù)性和可復(fù)用性。那么,為什么說MVC并不能改變單體式架構(gòu)本身的結(jié)構(gòu)呢?繼續(xù)回到圖1.5的例子來分析,如果采用MVC的模式,它又將變成什么樣子呢?單體式架構(gòu)MVC結(jié)構(gòu)如圖1.7所示。

圖1.7 單體式架構(gòu)MVC結(jié)構(gòu)
由圖1.7可以看出,與圖1.5相比,其架構(gòu)進(jìn)行了很大的優(yōu)化,先是根據(jù)業(yè)務(wù)的領(lǐng)域或一些邊界規(guī)則將代碼橫向拆分成各個(gè)模塊,然后每個(gè)模塊內(nèi)部通過MVC的方式進(jìn)行了縱向分層。但是,外部單體式的結(jié)構(gòu)并沒有改變,所有的代碼還在一個(gè)容器中運(yùn)行,所以在1.3.2節(jié)中所提到的單體式架構(gòu)的缺點(diǎn)還是存在的。MVC就像止疼藥,只能緩解這些問題,但隨著項(xiàng)目的逐漸發(fā)展,系統(tǒng)的不斷擴(kuò)大,這些問題還是會(huì)暴露出來。這時(shí),急需一種新的模式來從根本上解決這些問題,微服務(wù)架構(gòu)就是這種新的模式。
- DevOps原理與實(shí)踐
- 敏捷軟件開發(fā)(珍藏版)
- 企業(yè)性能測(cè)試:體系構(gòu)建、落地指導(dǎo)與案例解讀
- DevSecOps企業(yè)級(jí)實(shí)踐:理念、技術(shù)與案例
- 軟件需求分析實(shí)戰(zhàn)
- 軟件工程理論與應(yīng)用
- 從缺陷中學(xué)習(xí)C/C++
- Arduino項(xiàng)目開發(fā):智能家居
- 這就是MCP
- 服務(wù)端開發(fā):技術(shù)、方法與實(shí)用解決方案
- 每天5分鐘玩轉(zhuǎn)OpenStack
- 軟件質(zhì)量管理指南
- 邊緣云部署與運(yùn)營(yíng):系統(tǒng)性實(shí)現(xiàn)方法
- 區(qū)塊鏈核心算法解析
- 虛擬現(xiàn)實(shí):科技新浪潮