一個初學者對於MVC架構的理解


我很早之前就開始接觸.NET開發,一直都在2.0的框架下,所以對於MVC這種架構,聽說過,但沒有具體使用過,近期和外部朋友接觸時,有了解到他們公司在使用MVC這種架構,所以自己就找來相關資料了解一下MVC是什么。

MVC代表着”MODEL”、”VIEW”、”CONTROLLER” 。ASP.NET MVC是一種與傳統ASP.NET WEB開發不同的架構。使用MVC開發的WEB應用程序,對搜索引擎更加友好。

使用MVC模式開發,需要Microsoft .NET Framework 3.5以上的框架。

MVC是如何與瀏覽器進行交互的

 

和普通的WEB服務器交互一樣,MVC程序使用一樣的方式接受請求並返回信息給到瀏覽器。

clip_image002

MVC架構內部

 

完整的ASP.NET MVC架構是基於Microsoft .NET Framework 3.5,另外還使用LINQ。

MODEL是什么?

1. MVC MODEL基本上就是一個C#或者VB.NET的類。

2. MODEL將同時被CONTROLLER和VIEW訪問。

3. MODEL被CONTROLLER用來傳輸數據給到VIEW層。

4. VIEW層將使用MODEL來在頁面上顯示數據。

VIEW是什么?

1. VIEW層主要都是一些ASPX頁面文件,他們不包括后台代碼。

2. 在VIEW層中可以對所有的頁面,進行HTML生成和格式化。

3. 可以在VIEW層中使用內聯代碼,進行動態頁面開發。

4. VIEW層中的ASPX頁面的請求,只能調用CONTROLLER中的方法。

CONTROLLER是什么?

1. Controller基本上都是一些繼承了system.mvc.controller的C#或者VB.NET的類。

2. Controller是整個MVC架構的核心。

3. 在Controller類中的方法都是用來相應瀏覽器或者VIEW層的請求。

4. Controller將使用MODEL層來向VIEW層的頁面傳輸數據。

5. Controoler使用VIEWDATA來傳輸任何數據給到VIEW層。

clip_image004

MVC文件結構和文件的命名規范。

 

MVC程序開發中,使用標准的文件目錄結構和文件命名標准是非常重要的。

在程序的根目錄,必須要有3個目錄,分別是Model, View 和 Controller。

與普通的ASP.NET程序一樣,這三個目錄之外,根目錄下面也必須有一個Global.asax文件和一個Web.Config文件。

 

Root [directory]

· Controller [directory]

o Controller CS files

· Models [directory]

o Model CS files

· Views [directory]

o View aspx/ascx files

· Global.asax

· Web.config

 

clip_image006

ASP.NET MVC的運行生命周期

下面是一個MVC架構程序如何執行瀏覽器的請求。

下面圖形所涉及到的每一步執行的說明。

clip_image008

第一步,瀏覽器請求。

用戶在瀏覽器中,輸入一個網址:http://xxx.com/home/index/,這時候就產生一個瀏覽器請求。

第二步,Global.asax的作用,MVC路由。

這個網址將首先被Global.asax文件中的application_start()方法捕獲並解釋。從請求的網址中,將解釋出控制器,方法,和ID。

所以http://xxx.com/home/index/中,我們將得到:

l 控制器:home

l 方法:index()

l ID:空

第三步,Controller層與調用方法。

現在MVC將在Controller目錄下查找home控制器的類。一個控制器類中包含不同的方法。

類中可以包含一個以上的方法,但是MVC只會請求從URL中解釋出來的方法,在這里就是index()方法。

調用這個方法后,將返回純字符串或者將被VIEW層展示的HTML代碼。

第四步,調用VIEW層。

調用VIEW將返回view()。調用VIEW層,將會訪問view目錄下指定的ASPX頁面,並且生成將要返回給瀏覽器的HTML代碼。

在這個例子中,控制器是home,方法是index()。所以調用view()將會從/views/home/index.aspx中返回一個HTML代碼。

到這里,整個執行流程結束。這就是一個MVC架構如何工作的。

相關站點

· ASP.NET MVC 開發者中心

· ASP.NET MVC Framework 官方論壇

· ASP.NET MVC Framework 文檔

· ASP.NET MVC Contrib 提供MsMVC的擴展

 

我的微博:http://weibo.com/szhmn
敏捷人生博客:
http://blog.sina.com.cn/scrumme
http://blog.163.com/scrumme
http://www.cnblogs.com/scrumme/
歡迎轉載,轉載請注明:轉載自敏捷人生網站
本文出自 “何夢寧” 博客,請務必保留此出處http://blog.sina.com.cn/scrumme


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM