標籤:webform mvc
本文以圖形化的方式,從‘運行機制’方面對比傳統WebForm網站和MVC網站。
請參看以形:
一、運行機制
當我們訪問一個網站的時候,瀏覽器和伺服器都是做了哪些動作呢?
(本文只是提供一個簡單的運行過程,有興趣的找資料研究一下複雜的網路過程。)
(一)WebForm網站運行機制
假設為:www.baidu.com/index.aspx
1、Http請求(物理地址:index.aspx)
①發送請求
瀏覽器向伺服器發送請求報文,此時由IIS虛擬目錄接受。(通過配置過IIS,把網站掛載在伺服器上,通過訪問虛擬目錄的方式訪問網站的。)
②轉交請求
伺服器端的IIS軟體接收到請求後,把請求交給.NET FrameWork進行處理
③建立頁面類對象
.NET FrameWork根據請求的地址index.aspx,會建立對應的index_aspx類的對象(頁面對象)。
IIS的內部機制:
- 實現一個IHttphandler的介面
- 該介面實現一個ProcessRequest方法
- 該方法會調用對應頁面的Page_load方法
- 處理的商務邏輯或者是訪問資料庫的代碼
- 要輸出的Html或者其它內容
2、返回給瀏覽器
①轉交回複
通過IIS傳輸出給瀏覽器,要輸出的html元素或其他內容(html+js+css等)
②解析為圖形介面
瀏覽器解析html代碼,並翻譯為圖形化介面
(二)MVC網站的運行機制
假設為:www.baidu.com/news/index
1、Http請求(邏輯地址:news/index)
①發送請求(news/index)
②轉交請求(同上)
③建立類對象+方法
.NET FrameWork根據路由配置,解析URL,並建立news類的對象,並調用對象的index方法。通過View方法載入視圖,然後訪問視圖檔案夾下的index.cshtml
2、返回給瀏覽器(同上)
二、區別
1、請求方式
①WebForm:index.aspx頁面
www.baidu.com/index.aspx
在使用者看來請求的是index.aspx頁面,實際上伺服器端啟動並執行是index.aspx對應的類(前台頁面類的對象),先調用ProcessRequest方法,然後調Page_Load方法
②MVC:類名+方法名
www.baidu.com/news/index
2、伺服器端建立對象
①webForm:頁面類對象
伺服器端建立index.asp的前台頁面類的對象‘index.aspx’
②MVC:類對象
MVC:建立news類對象,並調用Index方法。
.NET FrameWork根據路由配置,解析URL,並建立news類的對象,並調用對象的index方法。通過View方法載入視圖,然後訪問視圖檔案夾下的index.cshtml
3、傳值方式
①WebForm:CodeBehand
前台-->後台
前台頁面繼承於後台頁面,可以通過<%...%>方式,訪問 台頁面公開的屬性(強耦合)
後台-->前台
包含runat=Server控制項的前台頁面,都會以變數的方式存在於後台類中,供後台調用
②MVC: ViewData
把ViewData當作一個中間類在Controller和View之間傳輸資料。好處:強型別視圖(將在後續文章中進行論述)。
三、總結
本文分別從以下方面,對比了傳統WebForm網站和MVC網站的區別:請求方式、創製方式、伺服器建立對象。
雖然如此,但WebForm和MVC都是基於ASP.NET管道模型上的兩種不同的開發方式。
(文中粗粒度的知識點,將在後續文中陸續展開)