這是在學校就接觸到的概念,在正式加入程式設計師隊伍之前,我對其的理解也只僅僅停留在字面意思,即模型層+檢視層+控制層。但是逐漸通過工作的磨礪,現在已經對其有了比較清楚的認識。
其實按照使用者請求的執行順序應該從左向右依次為view-controller-model。
如下圖:
這裡模擬乙個使用者查詢和新增的請求。
當使用者通過瀏覽器的web介面發起查詢請求時,首先會被控制層controller分發,然後會調取相應的model層進行資料庫查詢。然後model層再將資料庫查詢到的資料返回給控制層,控制層再將其返回view層,view層web頁面中進行顯示。
以前,我一直認為可以直接在控制層就呼叫model層來進行資料庫的互動。因為之前接觸到的專案業務邏輯比較簡單,所以直接在控制層就將很多任務作都完成了。當我慢慢理解了mvc的分層架構後,我覺得這是不嚴謹的,耦合性太強了,違背了mvc的初衷,即解耦。所以隨著mvc學習的深入,慢慢地又加入到了業務層service和資料訪問層dao。那麼上述的情景就可以有如下的表示:
當請求來了,controller就會將相應的請求分發到相應的service層,在service層中再呼叫dao層進行資料庫互動。這裡的dao層其實就是之前的model層,封裝了對資料庫的操作。這樣一來,就把業務處理邏輯從controller中分離出來,從而實現了解耦。
通過網上的了解,在有些專案中,其實也是沒有完全按照分層進行架構,省略了service層,直接將業務邏輯與資料訪問揉在了一起,這樣其實是不便於擴充套件的,為了專案的架構清晰,易於管理,方便擴充套件,還是應該按照分層的架構來構建專案。
MVC以及各層的作用
mvc全名是model view controller,是模型 model 檢視 view 控制器 controller 的縮寫,用一種業務邏輯 資料 介面顯示分離的方法組織 model 檢視是使用者看到並與之互動的介面。對老式的web應用程式來說,檢視就是由html元素組成的介面 view 模型表...
PCB的各層定義及描述
pcb的各層定義及描述 1 top layer 頂層佈線層 設計為頂層銅箔走線。如為單面板則沒有該層。2 bomttom layer 底層佈線層 設計為底層銅箔走線。3 top bottom solder 頂層 底層阻焊綠油層 頂層 底層敷設阻焊綠油,以防止銅箔上錫,保持絕緣。在焊盤 過孔及本層非電...
簡單理解各層的負載均衡
在實現haproxy的負載均衡時,看到它支援四層和七層,然後就先簡單的理解了一下不同層的負載均衡。從二層 資料鏈路層 就開始可以有負載均衡,是基於mac位址的,用乙個虛擬的mac位址接收,再 到乙個真實的mac位址上面去,三層 網路層 是基於ip位址的乙個 就是用乙個虛擬的vip來實現流量的乙個分攤...