MVC,SSM與三層架構的構成及相互關係

本文主要想談的內容有:

  1. 爲什麼要有架構?

  2. 三層架構是什麼?

  3. MVC框架是什麼?

  4. MVC框架和三層架構的關係?

  5. MVC框架的工作流程?

  6. SSM框架和三層架構的關係?

爲什麼要有架構?

這是爲了滿足“低耦合,高內聚”,實現代碼的健壯性和可擴展性。比如爲了更好的降低各層間的耦合度,在三層架構程序設計中,採用面向抽象編程。即上層對下層的調用,是通過接口實現的。而下層對上層的真正服務提供者,是下層接口的實現類。服務標準(接口)是相同的,服務提供者(實現類)可以更換。

三層架構是什麼?

三層架構由用戶界面層/表示層(User Interface),業務邏輯層(Business Logic Layer)和數據訪問層(Data Acess Layer)構成。

其中每一層的作用爲:

  1. 用戶界面層:負責與用戶進行交互。

  2. 業務邏輯層:主要是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理。

  3. 數據訪問層:主要是對非原始數據(數據庫或者文本文件等存放數據的形式)的操作層,也就是說是對數據庫,而不是對數據的操作,具體爲業務邏輯層或用戶界面層提供數據服務。

  • 舉個例子:

訪問一個網站。用戶需要經歷的過程有:在瀏覽器輸入 url,然後瀏覽器向 Server 發起一個 http 請求,Server 拿到這個 http 請求之後會根據相關的條件到數據庫查詢相關數據,然後把數據以特定的格式(網站是 html 格式)返回給瀏覽器,瀏覽器再根據特定數據渲染出相應頁面。那麼:

  1. 對用戶來說,瀏覽器就是用戶界面層,它主要是與用戶交互的頁面,根據用戶的輸入與事件,處理並顯示返回的特定數據。

  2. 連接表示層與數據訪問層的就是業務邏輯層,這包括後端程序中模型設計、驗證、業務規則、各種計算等。

  3. Server 端必須要一個強大的數據庫來存儲所有用戶交互產生的數據,而對這些數據的處理,包括增、刪、改、查就屬於數據訪問層。

  • 三層架構圖示:

MVC框架是什麼?

MVC框架是由Model模型(JavaBean),View視圖(Jsp) 和 Controller控制器(Servlet)構成

其中每一部分的作用爲:

  1. Model:承載數據,並對用戶提交請求進行計算的模塊。其分爲兩類,一類稱爲數據承載Bean,一類稱爲業務處理Bean。所謂數據承載Bean是指實體類,專門承載業務數據的,如Student、User等。而業務處理Bean則是指Service或Dao對象,專門用於處理用戶提交請求的。

  2. View:爲用戶提供使用界面,與用戶直接進行交互

  3. Controller:用於將用戶請求轉發給相應的Model進行處理,並將處理Model的計算結果向用戶提供相應響應。

  • MVC圖示:

  • (圖片來源於公衆號兄弟會)

MVC框架和三層架構的關係?

  1. 三層架構是一種軟件領域最普遍的分層式架構,而 MVC 是在三層架構的基礎上設計的一種框架型架構,三層架構是一種宏觀的概念,而 MVC 就是一種比較具體的三層架構的框架實現,我們在 MVC 的基礎上把不同類別的代碼文件進行分類就可以了

  2. 一般認爲View 層和 Controller 層都屬於三層架構的用戶界面層,而Model屬於業務邏輯層和數據訪問層

  • 圖示:

  • (圖片來源於公衆號科幫網)

 

有的認爲model只屬於業務邏輯層,理由如下:

人認爲 Model 層除了定義業務需要的實體類與簡單的邏輯算法處理之外,還應該包括對數據庫的操作、對網絡等的操作等,這對後端開發來說沒問題,因爲後端的數據全部來源於數據庫,而且後端可以很方便的跟數據服務器進行連接,而 Model 的業務邏輯大多都是來自對數據的處理,所以這種方式很正常。

但是對於客戶端來說差別就大了,我們知道客戶端的數據來源大多來自服務端的接口請求,但是很可能同時有本地數據庫、本地的文件都能提供數據,比如可能會有離線操作,比如可能爲了用戶體驗,用戶斷網的時候會做緩存處理,也就是說客戶端的數據來源有多種多樣,而 Model 本身的主要職責應該定義業務需要的數據模型以及簡單的邏輯處理,如果同時也要處理本地數據庫與網絡數據未免變得臃腫起來,而且職責不清晰。

  • 圖示:

  • 總的來說:MVC與三層架構並不是一一對應的,MVC只是三層架構基礎上設計的具體框架

MVC框架的工作流程?

  1. 用戶通過View頁面向服務端提出請求,可以是表單請求、超鏈接請求、AJAX請求等。

  2. 服務端Controller控制器接收到請求後對請求進行解析,找到相應 的Model對用戶請求進行處理。

  3. Model處理後,將處理結果再交給Controller

  4. Controller在接到處理結果後,根據處理結果找到要作爲向客戶端發回的響應View頁面。頁面經渲染(數據填充)後,再發送給客戶端

  • 圖示:

SSM與三層架構關係?

SSM主要由Spring,SpringMVC 和 Mybatis三個構成。它們在三層架構中所處的位置是不同的,即它們在三層架構中的功能各不相同,各司其職

  1. SpringMVC:作爲View層的實現者,完成用戶的請求接收功能。SpringMVC的Controller作爲整個應用的控制器,完成用戶請求的轉發及對用戶的響應

  2. MyBatis:作爲 Dao層的實現者,完成對數據庫的增、刪、改、查功能

  3. Spring:以整個應用大管家的身份出現。整個應用中所有的Bean的生命週期行爲,均由Spring來管理。即整個應用中所有對象的創建、初始化、銷燬,及對象間關聯關係的維護,均由Spring進行管理

  • 關係圖示:

標籤: 三層架構, MVC, SSM

http://www.cnblogs.com/fjjchina/p/7099713.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章