MVC與三層架構的理解與使用
MVC與三層架構之間的關係相信很多朋友都沒有清晰其具體組成下面來談談個人的理解,或許能幫到大家更清晰的認識這倆種思想,其實之所以有這樣的思想產生,目的只有一個,專案的可持續發展。
基本概念理解:
MVC:
其實一早MVC只是針對於後端開發或者前後端一體來說的:
Model(模型):通常指的就是我們的資料模型。作用一般情況下用於封裝資料。
View(檢視):通常指的就是我們的jsp或者html。作用一般就是展示資料的。通常檢視是依據模型資料建立的。
Controller(控制器):是應用程式中處理使用者互動的部分。作用一般就是處理程式邏輯的。
舉例webjsp分層,他們都在伺服器中:
1. M:Model,模型。JavaBean
* 完成具體的業務操作,如:查詢資料庫,封裝物件
2. V:View,檢視。JSP(html在前端,這裡不細講之前的差別)
* 展示資料
3. C:Controller,控制器。Servlet
* 獲取使用者的輸入
* 呼叫模型
* 將資料交給檢視進行展示
三層架構:
這主要針對於專案框架的整體結構 以下會結合ssm框架來說:
表現層(springMvc struts2):
也就是我們常說的web層。它負責接收客戶端請求,向客戶端響應結果,通常客戶端使用http協議請求
web層,web需要接收http請求,完成http響應。
表現層包括展示層和控制層:控制層負責接收請求,展示層負責結果的展示。
表現層依賴業務層,接收到客戶端請求一般會呼叫業務層進行業務處理,並將處理結果響應給客戶端。
表現層的設計一般都使用MVC模型。(MVC是表現層的設計模型,和其他層沒有關係)
業務層(spring(其實spring貫穿這個框架,放在這是為了體現其主要作用:業務邏輯)):
也就是我們常說的service層。它負責業務邏輯處理,和我們開發專案的需求息息相關。web層依賴業
務層,但是業務層不依賴web層。
業務層在業務處理時可能會依賴持久層,如果要對資料持久化需要保證事務一致性。(也就是我們說的,
事務應該放到業務層來控制)
持久層(mabatis Hibernate):
也就是我們是常說的 dao層。負責資料持久化,包括資料層即資料庫和資料訪問層,資料庫是對資料進
行持久化的載體,資料訪問層是業務層和持久層互動的介面,業務層需要通過資料訪問層將資料持久化到資料庫
中。通俗的講,持久層就是和資料庫互動,對資料庫表進行曾刪改查的。
擴充套件概念:
通過上面的概念,因該對這倆種思想有了一定的瞭解
現在結合二者來分析:
隨著程式的發展,前端的編寫思想也逐漸成熟,所以有了現在的走向大前端思想,而在這條路上逐漸成熟的路上MVC思想也漸漸成熟和清晰,前端慢慢和後端走向並靠近完全分離狀態,分離出來的前端有了自己的MVC:
而angularJs 等也繼承了這種思想,vue在次基礎進行優化(基本完全分離MVVM )
於是現在的MVC在我的理解中分前後端
前端angular1舉起來:
Model 資料(其實就是angular變數$scope.XX)
View: 資料的呈現 Html+Directive(指令)
Controller:操作資料,就是function 資料的增刪改(service Controller)
後端ssm舉起來:
後端許多人還會繼續用mvc去分層,但我覺得用分層架構直接去描述更好:
資料訪問層:dao:查詢所有需要的資料
業務邏輯層:interface(service介面): 面向介面
Service:繼承本地介面,再完成web層遠端呼叫所需要的服務
表現層: web層Controller:@reference注入介面物件,指定路徑 返回結果
MVC與三層:
M(資料 ):資料訪問層 + 業務邏輯層(介面層和服務層)
C(控制 ):表現層
V(檢視 ):表現層
說多了就會亂,簡而言之:前端用mvc後端用三層架構(僅供參考,每個人都有自己的程式碼習慣和思想)