MVC模式及原理

2022-09-22 19:06:12 字數 1964 閱讀 8422

mvc(model-view-controller,模型—檢視—控制器模式)用於表示一種軟體架構模式。它把軟體系統分為三個基本部分:模型(model),檢視(view)和控制器(controller)。

那麼mvc模式和我們熟悉的webform模式有什麼不同呢?他的各個部分又是怎樣分工的呢?

我們先來看一下普通的webform模式下,我們請求乙個例如的url,那麼我們的webform程式會到**根目錄下去尋找blog目錄下的index.aspx檔案,然後由index.aspx頁面的codebehind檔案(.cs檔案)進行邏輯處理,其中或許也包括到資料庫去取出資料(其中的經過怎樣的bll到dal這裡就不談了),然後再由index.aspx頁面來呈現給使用者。簡單的示意圖如下所示:

也就是乙個url請求的是在伺服器與該url對應路徑上的物理檔案(aspx檔案或其他),然後由該檔案來處理這個請求並返回結果給客戶端。

但是,對於mvc模式,這是怎樣的乙個過程呢?

注:如果你的是中文版的vs,安裝完後可能會出現找不到這個模板的現象,你可以參考

在中文版vs 08中安裝mvc

這篇文章設定一下。

建立乙個asp.net mvc專案後,預設的專案大概如下圖:

我們可以看到專案中有幾個資料夾的命名和mvc(model-view-controller,模型—檢視—控制器模式)是對應的。然後我們執行一下專案看看:

我們注意到位址列的url是 home/index,如果按照我們前面說的webform的模式的話,我們應該可以在我們的專案的根目錄下找到home目錄,然後home目錄下有個index的檔案,但是我們並不能在根目錄下找到home這個目錄。不過還是讓我們在views目錄下找到了views/home/index.aspx檔案,我們輸入這個位址執行看看:

oh,no!路徑是對的,檔案也存在,但為什麼會是404,說找不到檔案呢?如果不是直接訪問存在的物理檔案,那麼mvc又是怎樣工作的呢?

原來啊,mvc模式的工作過程是這樣的:

在mvc中,客戶端的所請求的url是被對映到相應的controller去,然後由controller來處理業務邏輯,或許要從model中取資料,然後再由controller選擇合適的view返回給客戶端。再說回前面我們執行的asp.net mvc程式訪問的http://localhost:2176/home/index這個url,它訪問的其實是homecontroller中的index這個action,見下圖:

其中public actionresult index()這個方法稱為controller的action,他返回的是actionresult的型別。乙個controller可以有很多個action。

那麼乙個url是怎樣被定位到controller中來的呢?我們先來看一下web.config檔案,在web.config檔案的httpmodules配置節中,我們可以看到乙個urlroutingmodule:

MVC模式原理

mvc模式將軟體程式分為3個核心模組 模型 model 檢視 view 和控制器 controller 模型 model 1 負責管理應用程式的業務資料 2 訪問和修改這些資料的業務規則以及 3 為檢視提供查詢模型狀態的方法。檢視 view 檢視負責與使用者進行互動,它 1 從模型中獲取資料向使用者...

MVC開發模式原理解析

jsp什麼都可以做,但是這樣子會很亂,沒有分工。開始慢慢地自己做封裝,以後學習了框架之後這種思想就更加嚴重。jsp 負責介面顯示 servlet 就相當於是控制層,協調jsp和dao的關係 dao data access object 即資料庫訪問物件 做資料庫的操作 又叫做模型層,這裡面有很多查詢...

C WEB專案MVC框架原理及約定

1 mvc原理圖 2 mvc專案資料夾說明 3 mvc中的約定 檢視訪問和定址規則 1 在控制器中使用view 方法呼叫檢視,返回和 動作方法同名 的檢視 2 定址規則 view 方法預設從 view資料夾 下尋找和控制器同名的資料夾 mvc中的約定 1 控制器 必須以controller結尾 2 ...