一、簡述
在軟體開發中,MVC與三層架構這兩個專業詞彙經常耳聞,同時總有很多人將它們混為一談,認為三層架構就是指MVC,給它畫上等號,但實際上,這是錯誤的認知,並不是說它們沒有任何關係,而是MVC與三層架構不是簡單的相等。下面將拿javaweb開發中的MVC(SSM框架)與三層架構進行比較,讓大家理清兩者之間的關係。
二、概念
1、系統架構
所謂系統架構是指整個應用系統程式大的結構,常見的系統架構有三層架構與MVC。前面已經說了,三層架構與MVC不是簡單的相等,它們存在差別,但又聯絡。現在可以肯定的是,這兩種系統架構的出現,都是為了降低系統模組間的耦合度。
2、三層架構
三層架構是指:檢視層View、服務層Service、持久層Dao,分別完成不同的功能。
View層:用於接收使用者提交請求的程式碼在這裡編寫。
Service層:系統的業務邏輯主要在這裡編寫。
Dao層:直接運算元據庫的程式碼在這裡編寫。
為了更好的降低各層間的耦合度,在三層架構程式設計中,採用面向抽象程式設計。即上層對下層的呼叫,是通過介面實現的。而下層對上層的真正服務提供者,是下層介面的實現類。服務標準(介面)是相同的,服務提供者(實現類)可以更換。這就實現了層間的耦合。
3、MVC
MVC是指:Model模型、View檢視、Controller控制元件器。
View:檢視,為使用者提供使用介面,與使用者直接進行互動。
Model:模型,承載資料,並對使用者提交請求進行計算的模組。其分為兩類,一類稱為資料承載Bean,一類稱為業務處理Bean。所謂資料承載Bean是指實體類,專門承載業務資料的,如Student、User等。而業務處理Bean則是指Service或Dao物件,專門用於處理使用者提交請求的。
Controller:控制器,用於將使用者請求轉發給相應的Model進行處理,並處理Model的計算結果向使用者提供相應響應。
MVC架構程式的工作流程是這樣的:
(1)使用者通過View頁面向服務端提出請求,可以是表單請求、超連結請求、AJAX請求等。
(2)服務端Controller控制器接收到請求後對請求進行解析,找到相應 的Model對使用者請求進行處理。
(3)Model處理後,將處理結果再交給Controller。
(4)Controller在接到處理結果後,根據處理結果找到要作為向客戶端發回的響應View頁面。頁面經渲染(資料填充)後,再傳送給客戶端。
三、關係
1、MVC與三層架構的關係
MVC與三層架構很相似,但它們並不一樣。如果以三層架構為背景,那麼MVC的三個部分分別對應的是什麼?
三層架構中的View層簡單的說就是跟使用者發生直接關係的層,MVC中的V和C就是這樣的存在,所以MVC中的V和C均屬於三層架構的View層。同時,我們知道MVC中的M(Model)包括了資料承載Bean和業務處理Bean,其中業務處理Bean分為Service或Dao物件,分別對應業務邏輯處理和資料庫操作,相應的,它們對應的是三層架構中的Service層和Dao層。故,它們的關係如下圖所示:
2、SSM與三層架構的關係
SSM即SpringMVC、Spring、Mybatis三個框架。它們在三層架構中所處的位置是不同的,即它們在三層架構中的功能各不相同,各司其職。
SpringMVC:作為View層的實現者,完成使用者的請求接收功能。SpringMVC的Controller作為整個應用的控制器,完成使用者請求的轉發及對使用者的響應。
MyBatis:作為 Dao層的實現者,完成對資料庫的增、刪、改、查功能。
Spring:以整個應用大管家的身份出現。整個應用中所有的Bean的生命週期行為,均由Spring來管理。即整個應用中所有物件的建立、初始化、銷燬,及物件間關聯關係的維護,均由Spring進行管理。