我很早之前就開始接觸.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程序使用一樣的方式接受請求並返回信息給到瀏覽器。
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層。
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
ASP.NET MVC的運行生命周期
下面是一個MVC架構程序如何執行瀏覽器的請求。
下面圖形所涉及到的每一步執行的說明。
第一步,瀏覽器請求。
用戶在瀏覽器中,輸入一個網址: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 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