MVC和WebForm在架构设计上最显著的不同点是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计837个文字,预计阅读时间需要4分钟。
使用ASP.NET MVC框架创建默认项目后,直观感受就是所有地址都经过Rewrite处理。源码和配置文件分析不难看出,MVC利用了httpModules来拦截地址请求,并整体上应用了System.Web.Routing类库来处理路由。
使用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的区别了。
本文共计837个文字,预计阅读时间需要4分钟。
使用ASP.NET MVC框架创建默认项目后,直观感受就是所有地址都经过Rewrite处理。源码和配置文件分析不难看出,MVC利用了httpModules来拦截地址请求,并整体上应用了System.Web.Routing类库来处理路由。
使用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的区别了。

