分析了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是二次恳求)的状况下达成了代码的逻辑层次的别离。

ASP.NET MVC与WebForm区别谈(asp.net mvc与asp.net的区别)  MVC与WebForm 第1张
图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路由的运用办法
转载请说明出处
知优网 » ASP.NET MVC与WebForm区别谈(asp.net mvc与asp.net的区别)

发表评论

您需要后才能发表评论