1. 程式人生 > >MVC框架與三層架構

MVC框架與三層架構

寫入 接收 應用 文本 http 動態頁面 不同 行數 控制器

MVC框架

介紹:

  • MVC全名Model View Controller
    • Model:模型的意思,代表業務模型
    • View:視圖的意思,代表用戶界面
    • Controller:控制器的意思,控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。
  • MVC把各個層次需要關註的內容分離了開來。
    • MVC將負責顯示數據的層次稱為視圖。View視圖主要負責向用戶顯示數據。它負責與用戶交互。
    • 視圖負責與用戶進行交互,用戶可以在視圖中進行數據交互,視圖中接收到數據之後,控制器負責封裝數據,根據業務來調用不同的業務模型去處理;模型接受到控制器發來的數據後,處理業務。

例子闡述:

  1. 用戶在web頁面中輸入了賬戶和密碼來進行余額查詢操作(View)
  2. 視圖封裝數據傳遞給控制器,控制器識別出這是一個“查詢余額”的業務請求。(View->Controller)
  3. 控制器識別出這是一個“查詢余額”的業務請求之後,控制器繼續封裝數據,調用“查詢余額”的業務模型來處理(Controller->Model)
  4. 業務模型接受到控制器傳來的數據,進行數據庫交互,查出余額,返回結果給視圖(Model通常會把數據封裝到對象當中),視圖將業務模型返回過來的數據顯示出來。(Model->View)【這裏有時候需要更改視圖的界面,比如你點擊查所有用戶,會跳轉到一個新視圖用來顯示用戶列表。這裏的視圖改變依賴於視圖解析器 ,視圖解析器會根據結果來進行不同的視圖選擇,有時候這個結果是模型給的(動態頁面),有時候是控制器給的(靜態頁面)。】

註意:

  • 視圖雖然是一個“交互界面”,但它很多時候都是基於對象模型來創建的,比如一個註冊界面,很多時候註冊頁面的文本框的name屬性都要與業務模型中的數據進行對應,這樣可以很輕易地將數據封裝起來。

三層結構:

介紹:

應用程序架構可以分為三個層次:表現層、業務層、持久層。

技術分享圖片

  • 表現層:(頂層)表現層負責用戶界面的顯示,並且負責幫助用戶向業務層提交業務邏輯處理請求,通常還負責將業務層發來的處理結果顯示到界面中。
  • 業務層:(中間層)業務層負責處理業務邏輯,它可以根據不同的業務來調用不同的代碼來處理。
  • 持久層:(底層)持久層負責向一個或多個數據庫中讀取或寫入數據。通常用來給業務層的業務邏輯處理提供數據。這個層次通常必須包括業務實體模型。

例子闡述:

以一個例子來談三個層次的作用:

  • 用戶訪問了某個網站的頁面,這個頁面上有各種各樣的功能(如果只是靜態的頁面的話,還不算表現層)
  • 用戶點擊某個按鈕,向服務器提交請求(表現層->業務層)
  • 服務器接收到請求,分析請求,調用對應的邏輯處理程序來處理請求(業務層)
  • 如果用戶發起的業務請求是一個與數據庫相關的業務,對應的邏輯處理程序調用數據庫交互邏輯來讀取/寫入數據(業務層->持久層)
  • 數據庫交互邏輯通過程序的配置信息來與數據庫進行交互,讀取/寫入數據後,返回結果。(持久層->業務層)【如果這個數據庫交互邏輯處於某個業務處理邏輯當中,那麽這時候就不算持久層,每個層次的功能都是獨立的。】
  • 業務邏輯處理程序接收到數據庫交互邏輯程序返回的數據,進行數據處理,然後返回到用戶的界面上。(業務層->表現層)
  • 服務器根據請求將數據顯示到網頁中,然後將這個網頁返回給用戶瀏覽器。(表現層)

註意:

  • 每個層次的職能應該是獨立的,否則無法獨立成一個層次。

  • 通常來說,表現層不應該存在業務邏輯處理的代碼,它通常只用來顯示動態數據。


MVC與三層架構的區別

  • MVC與三層架構並不等同,三層架構的三個層次並不與MVC對應
  • 如果要MVC與三層架構做對比的話,MVC就像一個中間件,它囊括了三層架構中業務層的大部分功能,但也涉及表現層(View視圖負責數據的顯示)和持久層(持久層中的實體類與Model模型,但Model比實體類要多出數據庫交互的功能)
  • MVC中Model基本相當於業務層+持久層

MVC框架與三層架構