ASP.NETMVC與WebForm的區(qū)別是什么

小編給大家分享一下ASP.NET MVC與WebForm的區(qū)別是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出越城免費做網(wǎng)站回饋大家。

談ASP.NET MVC與WebForm區(qū)別

使用ASP.NET MVC框架,創(chuàng)建默認項目,第一直觀感覺就是地址都是Rewrite過的。對源碼和配置文件稍加分析不難看出,MVC使用了httpModules來攔截地址請求,具體用到了System.Web.Routing類庫(MVC2中,MVC1怎么用的忘記了。)而這部分類庫被包裝在.NET Framework3.5 SP1中,MVC2需要SP1支持也就理所當(dāng)然了。SP1提供的System.Web.Routing類庫可以方便地進行地址請求攔截,對編碼處理方面也很優(yōu)秀。UrlRoutingModule類攔截請求,在這之前,Application_Start的時候,會給RouteTable的全局對象一個攔截的設(shè)置。而這個設(shè)置使用RouteCollection對象進行保存,MVC對這個類進行了擴展——RouteCollectionExtensions。這些可以不考慮,接下來,當(dāng)用戶訪問頁面時,UrlRoutingModule類攔截請求,在RouteTable中查看是否符合規(guī)則,符合的話,就會調(diào)用MvcHandler,這個調(diào)用在httpHandlers配置節(jié)點被注冊,條件是地址符合“*.mvc”規(guī)則。MvcHandler的ProcessRequest方法就會調(diào)用Controller來執(zhí)行。事實上整個過程都是黑盒子,用戶感覺不到。在Controller中某方法執(zhí)行后,返回結(jié)果,再進入具體的aspx頁面。

分析了MVC的工作工程,就可以對比其與WebForm的區(qū)別了。我們知道,MVC模式的業(yè)務(wù)被放置到Controller中去執(zhí)行,而aspx頁面只負責(zé)顯示。那么在MVC中的業(yè)務(wù)實際執(zhí)行時間被提前到了HttpMolde中,而WebForm的請求只在httpHandler容器中被執(zhí)行。也就是說MVC中Controller與View的分離是使用的ASP.Net請求管道隔離的,這樣的話無疑在不影響效率(一次請求,而Response.Redirect是二次請求)的情況下達成了代碼的邏輯層次的分離。

ASP.NET MVC與WebForm的區(qū)別是什么

MVC工作的優(yōu)點是顯然的,更加有利于理解分層邏輯,把握代碼的層次感。Controller到aspx頁面之間的過程,已經(jīng)被框架隔離。至于Controller或者View頁面與Model調(diào)用的過程,還是需要自己來把握。ASP.NET的MVC框架實現(xiàn)了Controller代碼的單獨管理。

而看WebForm開發(fā)模型,則只在HttpHandler容器中執(zhí)行,對其進行分層,在大的方面缺乏支持,而只能依靠邏輯上分離。并不是不能分離,而是由一定的局限性。HttpHandler的攔截,是跟訪問后綴名有關(guān)的。當(dāng)請求一個頁面時,那就是一個Handler,而WebForm模型實現(xiàn)顯示與邏輯分離,才有的是WinForm的事件驅(qū)動。顯然,事件必須被注冊到頁面里,比如Button1_Click這樣的代碼。而在Button1_Click執(zhí)行之前,Page_Load方法會被執(zhí)行。

顯示代碼被寫入Page_Load方法中,那么就會造成需要寫額外的廢代碼,比如if (!Page.IsPostBack)這樣的判定。而在Button1_Click執(zhí)行后需要顯示的部分,則比較難處理,寫出另一個方法,也是必須要在Button1_Click里調(diào)用的。替代的解決方案是使用Response.Redirect,在一個aspx頁面中處理邏輯,處理完就跳轉(zhuǎn)到另外一個顯示的頁面。這樣做的壞處是,在兩個頁面中數(shù)據(jù)很難共享,而跳轉(zhuǎn)是通過標記302來實現(xiàn),因此多一次請求。而另外還可以通過Server.Execute,Server.Transfer或者Context.RewritePath這樣的處理方式,則兩個頁面轉(zhuǎn)換是在服務(wù)器端完成,可以共享數(shù)據(jù),可以說和MVC框架的處理方式大同小異,缺點是需要手動配置這些重新定向的屬性。

從以上分析可以看出,MVC框架具有很強的優(yōu)越性,而WebForm也不是一無是處,在簡單的應(yīng)用中更加容易開發(fā)。WebForm也是可以實現(xiàn)和MVC一樣的分層方式,只是處理時需要多寫一些代碼而已。而我認為,在用WebForm開發(fā)分層遇到的最大問題是頁面與頁面之間數(shù)據(jù)的傳遞問題,而掌握好WebForm中使用服務(wù)器端跳轉(zhuǎn)的應(yīng)用技巧(Server.Execute,Server.Transfer或者Context.RewritePath)進行開發(fā)就可以解決數(shù)據(jù)傳輸問題,ASP.NET MVC與WebForm比較起來,WebForm更容易理解,不會產(chǎn)生復(fù)雜的配置,也是一個很不錯的選擇。

看完了這篇文章,相信你對ASP.NET MVC與WebForm的區(qū)別是什么有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁標題:ASP.NETMVC與WebForm的區(qū)別是什么
標題網(wǎng)址:http://bm7419.com/article32/jjcosc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、域名注冊App設(shè)計、商城網(wǎng)站、網(wǎng)站收錄、標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管