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

本文主要想談的內容有:

  1. 爲何要有架構?
  2. 三層架構是什麼?
  3. MVC框架是什麼?
  4. MVC框架和三層架構的關係?
  5. MVC框架的工做流程?
  6. SSM框架和三層架構的關係?

爲何要有架構?html

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

三層架構是什麼?數據庫

三層架構由用戶界面層/表示層(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進行管理
  • 關係圖示:
相關文章
相關標籤/搜索