在Web 開發中,MVC 與三層架構這兩個名詞會經常被人提及,很多人會將它們混為一談,認為MVC 就是三層架構,而實際上它們是兩個不同的概念,並不是說完全沒有關係,它們存在差異但也有相似的地方,不過可以肯定的是,這兩個架構都是為了降低系統物件關係間的耦合度而產生的。
首先介紹MVC 架構,MVC 指的是Model(模型)、View(視圖)、Controller(控制器)的簡寫,分別代表應用程式中三種不同職責的物件。
代表存取資料的POJO,也可以帶有業務邏輯,其作用是在記憶體中暫時儲存資料,並在資料變化時更新控制器,若要持久化則需要將它寫入資料庫或檔案中。
主要用來顯示內容或提交數據。
主要用來處理用戶的請求,它可以將用戶請求轉發給相應的Model 進行處理並根據Model 處理結果向用戶提供相應的回應。
再來介紹三層架構,它就是將整個應用程式劃分為表現層、業務邏輯層、數據存取層三個部分,各司其職不互相干擾,既解決耦合性,也增加了邏輯性、覆用性和可維護性。
主要負責接收用戶請求、轉發請求、產生數據並返回結果。
針對具體問題的操作,主要是從資料庫中取得數據並對數據進行邏輯處理。
也叫做持久層,主要負責對資料庫的操作,針對數據的新增、刪除、修改、查詢。
表現層則只是與用戶互動的一個功能,決定用戶請求的處理方式並返回結果;業務邏輯層並沒有使用SQL 語句對資料庫進行操作,而只是透過資料存取層的接口存取資料庫中的數據,並對數據進行邏輯上的處理。
簡單來說,三層架構的表現層是處理用戶請求並返回結果,這對應到MVC 中的V 和C,所以MVC 中的V 和C 可以判斷是屬於三層架構的表現層;而MVC 中的M 可以對存取資料或是進行業務邏輯處理,這對應到三層架構的業務邏輯層和資料存取層,它們的關係就會如下圖所示。
Web on Servlet Stack
Spring MVC与三层架构 - Heart.Think.Do