本文以图形化的方式,从‘执行机制’方面对照传统WebForm站点和MVC站点。

请參看下面图形:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpamluZzIwMTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="font-family:FangSong_GB2312; font-size:18px">

一、执行机制

当我们訪问一个站点的时候,浏览器和server都是做了哪些动作呢?

(本文仅仅是提供一个简单的执行过程,有兴趣的找资料研究一下复杂的网络过程。)

(一)WebForm站点执行机制

如果为:www.baidu.com/index.aspx

1、Http请求(物理地址:index.aspx)

①发送请求

浏览器向server发送请求报文。此时由IIS虚拟文件夹接受。(通过配置过IIS,把站点挂载在server上。通过訪问虚拟文件夹的方式訪问站点的。)

②转交请求

server端的IIS软件接收到请求后。把请求交给.NET FrameWork进行处理

③创建页面类对象

.NET FrameWork依据请求的地址index.aspx,会创建相应的index_aspx类的对象(页面对象)。

IIS的内部机制:

  1. 实现一个IHttphandler的接口
  2. 该接口实现一个ProcessRequest方法
  3. 该方法会调用相应页面的Page_load方法
    • 处理的业务逻辑或者是訪问数据库的代码
    • 要输出的Html或者其他内容

2、返回给浏览器

①转交回复

通过IIS传输出给浏览器,要输出的html元素或其它内容(html+js+css等)

②解析为图形界面

浏览器解析html代码。并翻译为图形化界面

(二)MVC站点的执行机制

如果为:www.baidu.com/news/index

1、Http请求(逻辑地址:news/index)

①发送请求(news/index)

②转交请求(同上)

③创建类对象+方法

.NET FrameWork依据路由配置。解析URL,并创建news类的对象,并调用对象的index方法。通过View方法载入视图。然后訪问视图目录下的index.cshtml

2、返回给浏览器(同上)

二、差别

1、请求方式

①WebForm:index.aspx页面

www.baidu.com/index.aspx

在用户看来请求的是index.aspx页面,实际上server端执行的是index.aspx相应的类(前台页面类的对象)。先调用ProcessRequest方法。然后调Page_Load方法

②MVC:类名+方法名

www.baidu.com/news/index

2、server端创建对象

①webForm:页面类对象

server端创建index.asp的前台页面类的对象‘index.aspx’

②MVC:类对象

MVC:创建news类对象,并调用Index方法。

.NET FrameWork依据路由配置。解析URL。并创建news类的对象。并调用对象的index方法。通过View方法载入视图,然后訪问视图目录下的index.cshtml

3、传值方式

①WebForm:CodeBehand

前台-->后台

前台页面继承于后台页面,能够通过<%...%>方式,訪问 台页面公开的属性(强耦合)

后台-->前台

包括runat=Server控件的前台页面,都会以变量的方式存在于后台类中。供后台调用

②MVC: ViewData

把ViewData当作一个中间类在Controller和View之间数据传输。优点:强类型视图(将在兴许文章中进行论述)。

三、总结

本文分别从下面方面,对照了传统WebForm站点和MVC站点的差别:请求方式、创制方式、server创建对象。

尽管如此。但WebForm和MVC都是基于ASP.NET管道模型上的两种不同的开发方式。

(文中粗粒度的知识点,将在兴许文中陆续展开)

【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照的更多相关文章

  1. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)

           在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对照>发表之后,引起了领导的注意.同一时候,开发小组内部在交流MVC和三层之间关系的 ...

  2. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照

    近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MV ...

  3. MVC系列1-MVC基础 (ASP.NET)

    终于决定写一个系列的文章了,最开始其实是准备写一下WPF的,因为我这两年一直在做WPF,对WPF的喜爱自然是无以言表.但是由于我所在的地区对WPF的普及不是很广泛,所以,被迫又开始做起来web,但是我 ...

  4. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  5. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  6. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  7. [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

    目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...

  8. 《ASP.NET SignalR系列》第五课 在MVC中使用SignalR

    接着上一篇:<ASP.NET SignalR系列>第四课 SignalR自托管(不用IIS) 一.概述 本教程主要阐释了如何在MVC下使用ASP.NET SignalR. 添加Signal ...

  9. ASP.NET MVC系列:从Controller访问Model数据

    在项目解决方案中,添加一个MoviesController控制器,选择对应的模板,和模型类以及数据上下文:关于如何添加模型类和数据上下文,我们在ASP.NET MVC系列:添加模型中已经介绍过

随机推荐

  1. ASP.NET MVC 手机短信验证

    本文来自于stoneniqiu的文章,原文地址 http://www.cnblogs.com/stoneniqiu/p/6234002.html 1.注册一个应用 得到AppKey 和 App Sec ...

  2. MySQL DB 主从复制之SSL

    需求架构 准备工作 主从服务器时间同步 # 主从服务器同时配置crontab任务,与NTP服务器同步时间即可 */5 * * * * ntpdate 172.16.0.1 &>/dev/ ...

  3. 推荐一个简洁优雅的博客系统,farbox

    这是我用farbox搞的一个博客:http://www.jsnull.com/ 特点: 1.无数据库,数据存在dropbox里,需要自己注册一个dropbox帐号 2.静态文本文件即是文章,可以在任何 ...

  4. windows组策略和共享

    Author: Jin Date: 20140585 ENV: win2008 R2 5年没弄windows了,现在随便弄弄,说实话不太喜欢windows,不出问题时候很方便,一出问题很头大.所有东西 ...

  5. Clever Little Box 电缆组件 USB A 插头 至 USB B 插头

    http://china.rs-online.com/web/p/usb-cable-assemblies/7244143/ 产品详细信息 USB3.0适配器 superspeed USB将提供10x ...

  6. How to Find Processlist Thread id in gdb !!!!!GDB 使用

    https://mysqlentomologist.blogspot.jp/2017/07/           Saturday, July 29, 2017 How to Find Process ...

  7. ie不支持max-height的解决之法

    .div{ max-height: 100px; _height:expression(this.scrollHeight > 100 ? "100px" : "a ...

  8. IPD概念

    集成产品开发-IPD简介 内训IPD流程,听完后,觉的流程的力量很强大,可以高效的团队几千上万人的研发团队,来正确地为同一个目标前进.因为讲解者是从华为出来的,所以,相关的案例分析以及理解,都是以华为 ...

  9. hadoop安装入门

    1.jdk安装和配置 1.1下载最新jdk文件 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-18802 ...

  10. 【BZOJ】【3437】小P的牧场

    DP/斜率优化 斜率优化基本题……等等,好像就没啥变化啊= = 嗯目测这题跟仓库建设差不多?写题的时候倒是没想这么多……直接推了公式. $$f[i]=min\{f[j]+cal(j,i)+a[i]\} ...