成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET MVC與WebForm區別談

開發 后端
分析了ASP.NET MVC的工作工程,就可以對比ASP.NET MVC與WebForm的區別了。希望通過本文,大家能更多的了解ASP.NET MVC與WebForm。

51CTO編輯推薦《ASP.NET MVC視頻教程

ASP.NET MVC與WebForm區別談

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

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

 

MVC工作模型
圖1 MVC工作模型

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

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

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

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

ASP.NET MVC與WebForm的區別就談到這里。

本文來自Birdshover博客園文章《MVC與WebForm***的區別

【編輯推薦】

  1. ASP.NET MVC單元測試:HttpContext類的Path屬性解惑
  2. 自定義的ControllerFactory:接口實現,支持Area
  3. ASP.NET Routing之“解析URL”功能詳解
  4. 為ASP.NET MVC應用添加自定義路由
  5. 學習ASP.NET MVC路由的使用方法
責任編輯:彭凡 來源: 博客園
相關推薦

2009-12-08 08:57:21

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-03-13 10:58:48

ASP.NetMVC框架編程

2009-12-30 14:28:09

ASP.NET Web

2013-03-29 10:21:23

ASP.NETAjax

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-08-18 17:50:37

ASP.NET MVC

2009-07-20 15:51:40

FubuMVC核心框架ASP.NET MVC

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2010-06-23 15:44:03

ASP.NET MVC

2010-03-19 09:17:16

ASP.NET MVC

2009-07-24 11:33:12

MVC單元測試ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产激情 | 午夜精品久久久久久久星辰影院 | 美女一区| 日本黄色激情视频 | 久热国产精品视频 | 国产四虎 | 亚洲精品片| 久久久久久久一区 | 亚洲精品一区二区 | 国产视频精品视频 | 国产精品欧美一区二区三区 | 日韩中文字幕网 | 欧美日韩不卡合集视频 | 免费不卡av | 欧美理论片在线观看 | 久久精品性视频 | 岛国av在线免费观看 | 欧美1页| 四虎永久免费在线 | 99成人精品 | 国产日韩精品久久 | 欧美舔穴| 久久国内精品 | 久久久久国产一级毛片 | 黄色毛片免费 | 看a网站 | 国产在线视频网 | 亚洲网在线 | 特黄一级| 国产精品爱久久久久久久 | 自拍偷拍小视频 | 欧美一级在线观看 | 欧美一区不卡 | 国产视频精品视频 | 国产成人免费视频 | 成人影院在线 | 色久五月 | 九九热精品视频 | 国产一区二区三区精品久久久 | 国产精品欧美一区二区 | 国产三区在线观看视频 |