MVC的秘密

  • 2020 年 3 月 31 日
  • 筆記

ASP.NET MVC

MVC到現在為止應該有很多年的歷史了,在學校學習asp.netMVC的時候我理解MVC包括三層,視圖(View)控制器(Controller)數據模型(Model)

  1. 控制器鏈接視圖層和數據模型層
  2. 數據模型層用來對資料庫中進行建模操作以及一些存儲過程的存放
  3. 視圖負責呈現用戶介面,不管它是HTML還是桌面應用程式上的UI小部件,該視圖與模型交互通訊,該模型包含視圖需要顯示的所有數據。視圖通常就沒有太多的邏輯,當然他也可能只是一個純的HTML.

SpringMVC

後面了解到了Java以後了解了SpringMVC,與 ASP.NET 不同,Spring MVC 對於 MVC 架構模式的實現就更加複雜了,增加了一個用於分發請求、管理視圖的 DispatchServlet,新增這個小工具繼承了FrameworkServlet。

  1. 通過 DispatchServlet 將控制器層和視圖層完全解耦;
  2. 視圖層和模型層之間沒有直接關係,只有間接關係,通過控制器對模型進行查詢、返回給 DispatchServlet 後再傳遞至視圖層;

Java最開始的MVC結構

Jsp+servlet+javaBean,以控制為核心,jsp只負責顯示和收集數據,Servlet,連接視圖和模型,

將視圖層數據,發送給模型層,javaBean,分為業務類和數據實體,業務類處理業務數據,數據實體,承載數據,5年前基本上大多數的項目都是使用這種mvc的實現模式,不得不說現在很多工程上還是用Servlet因為歷史原因,當然還有很多大廠也是用的ASP.netMVC在其上面做二次開發然後形成自己產品的開發框架,當然spring全家桶系列也很多。

我理解純凈版的MVC設計

一共包含三個部分,模型,視圖、控制器

模型對象

模型對象封裝了特定於應用程式的數據,並定義了處理和處理該數據的邏輯和計算。例如,模型對象可能代表遊戲中的角色或地址簿中的聯繫人。一個模型對象可以與其他模型對象具有一對多關係,因此有時應用程式的模型層實際上是一個或多個對象圖。在將數據載入到應用程式後,屬於應用程式持久狀態的大部分數據(無論該持久狀態存儲在文件還是資料庫中)都應駐留在模型對象中。因為模型對象代表與特定問題領域相關的知識和專長,所以它們可以在相似的問題領域中重用。

通訊:用戶操作通過控制器對象進行通訊視圖層中創建或修改數據,並導致創建或更新模型對象。當模型對象發生更改時(例如,通過網路連接接收到新數據),它將通知控制器對象,該控制器對象將更新相應的視圖對象。

查看物件

視圖對象是用戶可以看到的應用程式中的對象。視圖對象知道如何繪製自身,並且可以響應用戶的操作。視圖對象的主要目的是顯示來自應用程式模型對象的數據並啟用該數據的編輯。儘管如此,視圖對象通常在MVC應用程式中與模型對象分離。

因為您通常會重用和重新配置它們,所以視圖對象可在應用程式之間提供一致性。

通訊:視圖對象通過應用程式的控制器對象了解模型數據的變化,並通過控制器對象將用戶啟動的更改(例如,在文本欄位中輸入的文本)通過控制器對象傳遞給應用程式的模型對象。

控制器對象

控制器對象充當一個或多個應用程式的視圖對象與其一個或多個模型對象之間的中介。因此,控制器對象是一個通道,視圖對象通過該通道了解模型對象的變化,反之亦然。控制器對象還可以為應用程式執行設置和協調任務,並管理其他對象的生命周期。

通訊:控制器對象解釋在視圖對象中進行的用戶操作,並將新的或更改的數據傳遞到模型層。當模型對象更改時,控制器對象會將新的模型數據傳達給視圖對象,以便它們可以顯示它。

結尾

其實感覺微軟的asp.net MVC結構是最容易讓人理解的,而且操作也很簡單只需要在VS中創建一個MVC的項目就可以快速體驗到,而且結構很清晰,如果大家想了解思想的話可以嘗試入手下asp.net MVC。