MVC和WebForm区别
WebForm的理解
1、?WebForm概念
ASP.NETWebform提供了一個類似于Winform的事件響應(yīng)GUI模型(event-drivenGUI),隱藏了HTTP、HTML、JavaScript等細(xì)節(jié),將用戶界面構(gòu)建成一個服務(wù)器端的樹結(jié)構(gòu)控件(Control),每個控件通過ViewState保持自己的狀態(tài),并自動把客戶端的js事件和服務(wù)器端的事件聯(lián)系起來。這種做法使得開發(fā)WinForm和WebForm程序具有相近的開發(fā)體驗,填平WinForm開發(fā)(有狀態(tài)、面向?qū)ο蟮?#xff09;和WebForm開發(fā)(無狀態(tài)、面向HTML的)之間的鴻溝。
2、WebForm 請求流程
比如訪問 http://www.qidian.com/Default.aspx
1、Http請求(物理地址:Default.aspx)
①發(fā)送請求: 瀏覽器向服務(wù)器發(fā)送請求報文,此時由IIS虛擬目錄接收。(通過配置過IIS,把網(wǎng)站掛載在服務(wù)器上,通過訪問虛擬目錄的方式訪問網(wǎng)站的。)
②轉(zhuǎn)交請求: 服務(wù)器端的IIS軟件接收到請求后,把請求交給.NET FrameWork進(jìn)行處理。
③創(chuàng)建頁面類對象:.NET FrameWork根據(jù)請求的地址index.aspx,會創(chuàng)建對應(yīng)的index_aspx類的對象(頁面對象)。
IIS的內(nèi)部機(jī)制:
實現(xiàn)一個IHttphandler的接口
該接口實現(xiàn)一個ProcessRequest方法
該方法會調(diào)用對應(yīng)頁面的Page_load方法
處理的業(yè)務(wù)邏輯或者是訪問數(shù)據(jù)庫的代碼
要輸出的Html或者其它內(nèi)容
2、返回給瀏覽器
①轉(zhuǎn)交回復(fù): 通過IIS傳輸出給瀏覽器,要輸出的html元素或其他內(nèi)容(html+js+css等)
②解析為圖形界面:瀏覽器解析html代碼,并翻譯為圖形化界面
如圖:
?
2、?WebForm的優(yōu)點(diǎn):
1.???有大量的服務(wù)器控件支持,比如:GridView、Repeater等控件可以方便的進(jìn)行數(shù)據(jù)綁定,從而減少的大量代碼的編寫。
2.???學(xué)習(xí)成本低,由于微軟封裝的比較深,造成深入學(xué)習(xí)的難度加大。
3.???基于事件驅(qū)動編程,如:click事件等,aspx和cs文件分離,即顯示邏輯和處理邏輯分離。
4.???支持視圖狀態(tài),每個控件以“隱藏域”的形式存在當(dāng)前表單頁面未達(dá)到“有狀態(tài)”,即ViewState。
3、?WebForm的缺點(diǎn)
1.???由于使用的ViewState會增加頁面的負(fù)擔(dān),造成性能不是很高。
2.???代碼重用性不高,缺少對并行開發(fā)的支持,
3.???因為采用code-behind 代碼后植技術(shù),使aspx頁面與cs緊密耦合度太高。
4.???對Seo不友好,因為URL指定具體的aspx頁面。
5.???因為緊密耦合度太高、使用大量的事件處理函數(shù),不利于單元測試。
二、???????MVC的理解
1、?MVC的概念
Asp.netMvc架構(gòu)模式是一種 低耦合、可測試的web應(yīng)用程序框架,它是基于CLR和成熟的MVC架構(gòu)構(gòu)建的。ASP.NET MVC不支持ViewState和服務(wù)器控件。
2、?MVC的請求流程
比如訪問:http://www.google.com.hk/FirstPage/Default
1、Http請求(邏輯地址:FirstPage/Default)
①發(fā)送請求(FirstPage/Default)
②轉(zhuǎn)交請求(同上)
③創(chuàng)建類對象+方法
.NET FrameWork根據(jù)路由配置,解析URL,并創(chuàng)建news類的對象,并調(diào)用對象的index方法。通過View方法加載視圖,然后訪問視圖文件夾下的index.cshtml
2、返回給瀏覽器
如圖:
?
3、?MVC的優(yōu)點(diǎn)
1.???架構(gòu)降低了程序間的耦合性。
2.???不支持ViewState,頁面更加干凈,可以提升程序的性能。
3.???支持并行開發(fā),可擴(kuò)展性好,繼承了asp.net的特性,表單驗證、緩存、會話等。
4.???由于程序耦合度低,可以比較順利的進(jìn)行單元測試。
5.???通過修改路由規(guī)則,可以控制生成自定義的url,因此控制生成seo友好的url將更加容易。
6.???強(qiáng)類型view實現(xiàn),更安全,更高效。
4、?MVC的缺點(diǎn)
需要有一定的html、css、js、jquery前端技術(shù),也就增加了一些學(xué)習(xí)的成本。
MVC和WebForm的選擇場景
新開發(fā)的項目建議采用MVC。
想要快速開發(fā)的中小型項目可以選擇WebForm。
比較關(guān)注單元測試、性能、SEO、代碼重用性的話建議采用MVC。
最后結(jié)語
MVC和WebForm都有自己的優(yōu)缺點(diǎn),目前兩種技術(shù)都存在,證明都有自己的價值,雖然現(xiàn)在MVC應(yīng)用越來越廣發(fā),我們不能一味的否定WebForm。一個高級程序員用WebForm實現(xiàn)的網(wǎng)站性能并不一定比初級程序員用MVC實現(xiàn)的網(wǎng)站性能差,最重要的還是努力提升自己的技術(shù)能力才是王道!
總結(jié)
以上是生活随笔為你收集整理的MVC和WebForm区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如果按银行基准利率存100万,你和银行各
- 下一篇: 第三节 入门属性