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

请參看下面图形:

一、执行机制

当我们訪问一个站点的时候,浏览器和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管道模型上的两种不同的开发方式。

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

转载于:https://www.cnblogs.com/yfceshi/p/6756255.html

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

  1. JVM调优系列:(三)类加载和执行机制

    类加载机制 JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: 每个ClassLoader加载Class的过程是: 1.检测此Class是否载入过(即 ...

  2. 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...

    转自 学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习 ...

  3. [Asp.net MVC]Asp.net MVC5系列——添加数据

    目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...

  4. ASP .NET Core Web MVC系列教程四:添加模型

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程三:添加视图 ...

  5. ASP .NET Core Web MVC系列教程三:添加视图

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程二:添加控制器 ...

  6. ASP .NET Core Web MVC系列教程二:添加控制器

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程一:创建一个W ...

  7. ASP .NET Core Web MVC系列教程一:创建一个Web应用程序

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 从Visual Studio中选择" 创建新项目". 选 ...

  8. ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序

    本系列教程翻译自微软官方教程,官方教程地址:Get started with ASP.NET Core MVC | Microsoft Docs 本系列教程介绍了构建MVC Web应用程序的基础知识. ...

  9. 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性

    原文:解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性 (GlobalImport全局导入功能) 默认新建立的MVC程序中,在Views目录下,新增加了一个_Global ...

最新文章

  1. 科学教师与实验教师工作计算机,计算机实验指导教师工作职责
  2. href 带参数 打开exe_js调用exe文件 兼容所有浏览器
  3. webhook php自动部署,git利用webhook实现自动部署​
  4. c++构造函数用法一
  5. 不要伤害指针(3)--指针和结构类型的关系
  6. 初步认识深度学习笔记(一)
  7. 数组对象常用处理方案(算法思路)
  8. 74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)
  9. 本机获取Intel AMT IP地址的例子
  10. Excel 取消Internet及网络路径自动替换为超链接
  11. Python 进阶 之 socket模块
  12. SDP(12): MongoDB-Engine - Streaming
  13. knn算法python代码_在python中使用KNN算法处理缺失的数据
  14. 200行代码实现推流到直播平台
  15. 建立项目仓库(Gitgub 或 Coding 或 Gitlab 或 Gitee)
  16. 商务部都在努力为直销行业创造良好的发展环境,你还在等什么?
  17. 中国国有资本投资运营公司“十四五”投资规划及发展动向展望报告2022-2028年
  18. python嵌入式开发实战_python在嵌入式
  19. PANOPLY:Low-TCB Linux Applications with SGX Enclaves笔记
  20. Java SE(六)之面向对象(封装,继承,多态,接口)

热门文章

  1. Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册
  2. php网址变量怎么输出,【PHP网站】如何使用dedecms v5.7前台模版里输出变量
  3. oracle服务器找不到怎么解决,简析Oracle数据库常见问题及解决方案
  4. lsof -i:port 的作用
  5. CSS实现垂直居中的5种方法
  6. 浅说 XSS和CSRF
  7. 计算机网络实验11.6.1,6.111 2004春季课程:数位系统概论实验(Introductory Digital Systems Laboratory, Spring 2004)...
  8. knime如何连接mysql_knime怎么连接MySQL?
  9. 完美主义怎么解决_相信我,你不要完美主义
  10. 关于MFC遇到的一系列类型转换问题