MVC框架 介紹: MVC全名Model View Controller Model:模型的意思,代表業務模型 View:視圖的意思,代表用戶界面 Controller:控制器的意思,控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。 MVC把各個層次需要關註的內容分離了開來。 MVC將負責顯示 ...
MVC框架
介紹:
- MVC全名Model View Controller
- Model:模型的意思,代表業務模型
- View:視圖的意思,代表用戶界面
- Controller:控制器的意思,控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。
- MVC把各個層次需要關註的內容分離了開來。
- MVC將負責顯示數據的層次稱為視圖。View視圖主要負責向用戶顯示數據。它負責與用戶交互。
- 視圖負責與用戶進行交互,用戶可以在視圖中進行數據交互,視圖中接收到數據之後,控制器負責封裝數據,根據業務來調用不同的業務模型去處理;模型接受到控制器發來的數據後,處理業務。
例子闡述:
- 用戶在web頁面中輸入了賬戶和密碼來進行餘額查詢操作(View)
- 視圖封裝數據傳遞給控制器,控制器識別出這是一個“查詢餘額”的業務請求。(View->Controller)
- 控制器識別出這是一個“查詢餘額”的業務請求之後,控制器繼續封裝數據,調用“查詢餘額”的業務模型來處理(Controller->Model)
- 業務模型接受到控制器傳來的數據,進行資料庫交互,查出餘額,返回結果給視圖(Model通常會把數據封裝到對象當中),視圖將業務模型返回過來的數據顯示出來。(Model->View)【這裡有時候需要更改視圖的界面,比如你點擊查所有用戶,會跳轉到一個新視圖用來顯示用戶列表。這裡的視圖改變依賴於視圖解析器 ,視圖解析器會根據結果來進行不同的視圖選擇,有時候這個結果是模型給的(動態頁面),有時候是控制器給的(靜態頁面)。】
註意:
- 視圖雖然是一個“交互界面”,但它很多時候都是基於對象模型來創建的,比如一個註冊界面,很多時候註冊頁面的文本框的name屬性都要與業務模型中的數據進行對應,這樣可以很輕易地將數據封裝起來。
三層結構:
介紹:
應用程式架構可以分為三個層次:表現層、業務層、持久層。
- 表現層:(頂層)表現層負責用戶界面的顯示,並且負責幫助用戶向業務層提交業務邏輯處理請求,通常還負責將業務層發來的處理結果顯示到界面中。
- 業務層:(中間層)業務層負責處理業務邏輯,它可以根據不同的業務來調用不同的代碼來處理。
- 持久層:(底層)持久層負責向一個或多個資料庫中讀取或寫入數據。通常用來給業務層的業務邏輯處理提供數據。這個層次通常必須包括業務實體模型。
例子闡述:
以一個例子來談三個層次的作用:
- 用戶訪問了某個網站的頁面,這個頁面上有各種各樣的功能(如果只是靜態的頁面的話,還不算表現層)
- 用戶點擊某個按鈕,向伺服器提交請求(表現層->業務層)
- 伺服器接收到請求,分析請求,調用對應的邏輯處理程式來處理請求(業務層)
- 如果用戶發起的業務請求是一個與資料庫相關的業務,對應的邏輯處理程式調用資料庫交互邏輯來讀取/寫入數據(業務層->持久層)
- 資料庫交互邏輯通過程式的配置信息來與資料庫進行交互,讀取/寫入數據後,返回結果。(持久層->業務層)【如果這個資料庫交互邏輯處於某個業務處理邏輯當中,那麼這時候就不算持久層,每個層次的功能都是獨立的。】
- 業務邏輯處理程式接收到資料庫交互邏輯程式返回的數據,進行數據處理,然後返回到用戶的界面上。(業務層->表現層)
- 伺服器根據請求將數據顯示到網頁中,然後將這個網頁返回給用戶瀏覽器。(表現層)
註意:
每個層次的職能應該是獨立的,否則無法獨立成一個層次。
通常來說,表現層不應該存在業務邏輯處理的代碼,它通常只用來顯示動態數據。
MVC與三層架構的區別
- MVC與三層架構並不等同,三層架構的三個層次並不與MVC對應
- 如果要MVC與三層架構做對比的話,MVC就像一個中間件,它囊括了三層架構中業務層的大部分功能,但也涉及表現層(View視圖負責數據的顯示)和持久層(持久層中的實體類與Model模型,但Model比實體類要多出資料庫交互的功能)
- MVC中Model基本相當於業務層+持久層