WebForm网站和MVC网站运行机制的区别
一、MVC相对于WebForm的变化
1. 使用URL Routing技术:Web程序的URL不再是指向具体的物理页面.aspx,而是指向某个Controller的某个方法。一个典型的MVC架构的程序,其URL可能如下所示:
http://www.mysite.com/Customer/Index
使用该MVC架构的程序其URL不必有文件扩展名。上面这个URL中的Customer即为Controller的名字。而Index是Customer定义的一个方法名。
2. Web程序的界面.aspx不再使用服务器端的Form:
<asp: form runat="server"></form>
那么与服务器端的Form相关的Postback以及页面生命周期的事件也不存在了。
3. 页面中不再有View State。MVC下将不能使用View State来存储程序状态信息。
4. 不再提供依赖于服务器端Form的服务器控件事件,开发人员熟悉的Button_Clicked事件在MVC下将不再需要。
二、WebForm网站和MVC网站运行机制的区别
①WebForm网站的运行机制
比如说我们现在要访问一个WebForm站点:www.google.com.hk/Default.aspx(仅仅是示例)。我们的浏览器和服务器都是做了哪些动作呢?
1)首先浏览器会向目的服务器发送请求报文。
配置过IIS的都知道,网站挂载在服务器上,我们是通过访问虚拟目录的方式访问网站的。这时候目的主机的IIS接收的是访问该虚拟目录下Default.aspx文件的请求;(当然这也是一个非常复杂的过程,包括请求DNS服务器,找到目的主机IP,根据IP地址访问目的主机。复杂的网络过程就不叙述,有兴趣的自己找资料学习);
2)服务器端的IIS软件接收到请求后,把请求交给.NET FramWork进行处理;
3).NET FramWork会创建Default_aspx类的对象,也就是我们所说的页面对象。(在WebFrom网站创建完,并且编译后Default.aspx会被编译成Default_aspx类)
到现在的整个过程都还是Http请求,IIS的内部机制会去实现一个IHttphandler的接口,其中该接口实现一个ProcessRequestfang方法
MSDN是这样解释的
该ProcessRequest()方法会去调用对应页面的Page_Load() 方法
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //处理的业务逻辑或者是访问数据库的代码 4 //要输出的Html或者其它内容 5 }
4)返回给浏览器(包括Html,CSS,Js等等)
流程示意图如下:
②MVC网站的运行机制
还比如说我们现在要访问一个MVC站点:www.google.com.hk/FirstPage/Default(仅仅是示例)。我们的浏览器和服务器又做了哪些动作呢?
1)浏览器向服务器发送Request请求报文(FirstPage/Default)
2)服务器端的IIS相应Request请求
3).NET FramWork根据路由配置,解析URL,并创建FirstPage类的对象,并调用相应的Default方法
1 public ActionResult Default() 2 { 3 4 return View();//返回给视图 5 }
4)然后会访问视图文件夹下的Default.cshtml,返回给浏览器(其中包括html,css,js等等)
流程的示意图如下:
这只是一个比较简单的运行过程。其实在这过程中发生了很多事情,比如说:执行Global.asax中的Application_Start()方法来完成一些初始化的工作等等,会在以后的文章中继续解析。
以上就是WebForm网站和MVC网站运行机制的区别。
那么到底使用MVC的优点比WebForm到底有哪些优点呢?
①最重要的就是.NET程序员在开发的时候再也不会使用那些被很多人诟病的微软封装的控件了。
②MVC设计模式降低了模型(Model,业务和数据)和视图的耦合关系。包括我们在开发WebForm网站使用三层架构的思想也是为了降低数据和视图的耦合等;
③可以复用视图,也就是说同样的数据可以使用不同的视图以不同的图标展示出来。
WebForm网站和MVC网站运行机制的区别相关推荐
- 【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照
本文以图形化的方式,从'执行机制'方面对照传统WebForm站点和MVC站点. 请參看下面图形: 一.执行机制 当我们訪问一个站点的时候,浏览器和server都是做了哪些动作呢? (本文仅仅是提供一个 ...
- 程序的本质(指令、数据及其组织形式);线程、进程的作用及其运行机制和区别
- js中当等于最小值是让代码不执行_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理...
前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------超长文+多图预警,需要花费不少时间.---------- 如果看完本文后,还对进程线程傻傻分不清,不清楚浏 ...
- 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案
近期有Linux ASP.NET用户反映,在MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页) ...
- 如何发布.Net MVC 网站项目(攻略集锦)
转载自诗人江湖老,原文地址 参考文献 既然是攻略,就必然有参考文献,放在文章开头,以示敬意! 1.MVC项目发布步骤 2.未能从程序集加载"System.ServiceModel.Activ ...
- 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...
- IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法
IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序"Extensionle ...
- IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0 实际解决方案
IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法 IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Int ...
- 监测ASP.NET MVC 网站
使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是无法远程做监测的动作,MiniProfi ...
- 突破电信80端口封锁,在群晖Docker上实现.NET MVC网站访问
前一篇文章写了在群晖上部署.NET MVC网站,但是因为80端口被电信等运行商封锁了,所以只能使用8880端口访问,PC上访问毫无问题,但是在微信里分享总是提示不是标准80端口等等提示,于是放狗搜索如 ...
最新文章
- 独家 | 构建端到端数据科学项目,从我的Data Scientist Ideal Profiles项目中学习(附链接)...
- SAP MM 如何根据一个已经存在的IDoc产生新的IDoc?
- 索尼AI CEO:我们要让AI在30年内拿到诺贝尔奖
- Python 调用pyaudio库录制以及播放wav音频文件
- python2.7显示中文_Python 2.7中文显示与处理方法
- layout_gravity
- 有意思的逻辑思维题(三)(hdu2211,蓝桥杯蚂蚁感冒)
- error: expected expression before ‘;’ token的问题
- 华为机试HJ103:Redraiment的走法
- 一天干掉一只Monkey计划(一)——基本光照模型及RT后处理 【转】
- jquery进度条插件
- 【案例】星环科技×某能源企业:数据中台实践
- python中response是什么意思_python中的requests,response.text与response.content ,及其编码
- 能够正常加入域但无法实施域策略
- ninja ripper新版教程
- 史上最全的数学建模竞赛介绍,大家不要错过哦!!!
- ad怎么修改栅格_AD 10怎么设置栅格?
- 【移动安全实战篇】————3、Android应用程序破解入门
- 基于JAVA校园疫情信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
- Matlab的基本语法和常用函数总结