转自:http://www.cnblogs.com/stwyhm/archive/2006/08/08/470972.aspx

HTTP运行期

HTTP运行期处理客户端应用程序(例如Web浏览器)进入的一个Web请求,通过处理它的应用程序的适当组件路由请求,然后产生响应并发回提出请求的客户端应用程序。

进入的HTTP Web请求最先由IIS Web服务器接收到,它在此请求基于ASP.NET已注册处理的扩展名传送到ASP.NET ISAPI上。

HTTP运行期首先创建一个HttpContext对象的实例,它包含了当前正在处理的请求信息,接着创建在处理逻辑中涉及到的所有其他组件都可以使用的上下文对象。HttpContext实例提供了对请求对象(HttpRequest类的实例)和响应对象(HttpResponse类的实例)的访问。

HTTP运行期集成由称为HTTP模块(HTTP Module)的组件构成的处理管线,用于执行请求预处理动作(如:高速缓存的查询和授权)和后处理动作(如:更新调整缓存)。这些组件实现IHttpModule接口。在管线中,每个模块处理不同的全局应用层次和特定请求事件来执行其逻辑。

HTTP运行期基于请求的URL还选择一个HTTP处理程序(实现IHttpHandler接口的组件)或HTTP处理程序工厂(实现IHttpHandlerFactory接口的组件)来完成引入请求的实际处理过程。处理程序用HttpContext对象来收集请求信息、并写出响应的结果。


图1:ASP.NET Web 应用程序中的请求处理过程

一个HTTP请求的处理过程

当一个HTTP请求被送入HttpRuntime之后,这个HTTP请求会继续被送入到一个被称为HttpApplicationFactory的容器中。而这个窗口会给出一个HttpApplication实例来处理传递进来的HTTP请求,而后这个HTTP请求会依次进入如下几个容器中:

HttpModule ——> HttpHandler Factory ——> HttpHandler

当系统内部的HttpHandler的ProcessResquest的方法处理完毕之后,整个Http Request就被处理完成了,客户端也就得到相应的结果了。

一个完整的HTTP请求在ASP.NET Framework的处理过程如下:

HttpRequest ——> inetinfo.exe ——> ASPNET_ISAPI.dll ——> Http Pipeline ——> ASPNET_WP.exe ——> HttpRuntime ——> HttpApplication Factory  ——> HttpApplication  ——> HttpModule ——> HttpHandler Factory  ——> HttpHandler  ——> HttpHandler.ProcessRequest()

页面执行模型

页面执行模型由页面HTTP处理程序工厂开始,它注册HTTP运行期以为所有.aspx文件处理请求。页面处理程序工厂负责创建一个Page对象的实例,这是将最终处理请求所生成响应结果的HTTP处理程序。

首先页面处理程序工厂尝试在与请求的.aspx文件相关的.NET高速缓存内查找以前编译过的页面类。当查找失败时,就像第一次请求一样,处理程序工厂将读取和解析文件,并创建一棵解析树(parse tree)。解析树类似于控件树,但是并不包含控件,解析树包含称为控件生成器(control builder)的对象实例。控件生成器包含了在解析过程期间收集的相关控件信息。然后通过Page指令中的Language attribute,用与页面相关的语言把解析树转变为代码。然后,页面处理程序工厂调用适当的编译程序,动态地编译从Page中得到的类,页面处理程序工厂还将新建的类放置到ASP.NET调整缓存中,并且把高速缓存记录和文件相关性关联起来。文件相关性监视.aspx文件做出的变化,并保证任何变化都自动地使高速缓存记录无效,在下次请求时这些记录将再次解析修改过的文件。


图2:页面如何处理请求

转载于:https://www.cnblogs.com/JustDI/archive/2007/07/02/802562.html

一点一点学ASP.NET之基础概念——HTTP运行期与页面执行模型相关推荐

  1. HTTP运行期与页面执行模型 【摘自文野的一天一点学aspnet之基础概念】

    HTTP运行期与页面执行模型 [摘自文野的一天一点学aspnet之基础概念] 一个完整的HTTP请求在ASP.NET 的处理过程如下: HttpRequest  ---> inetinfo.ex ...

  2. 一点一点学ASP.NET之基础概念——HttpModule

    原文地址为: 一点一点学ASP.NET之基础概念--HttpModule HttpModule -- 一点一点学ASP.NET 文野: 2006 年 8 月 9 日 星期三 上一篇:一点一点学ASP. ...

  3. 一点一点学ASP.NET之基础概念——委托

    委托的概念 委托实际上是类(一个貌似函数一样的类),我们已经使用函数指针很多年了--函数指针也被称为过程类型,但是它们的实现都不是类.它们是单独的函数指针的简单实例.委托是包含这些功能的类,委托类通过 ...

  4. 一点一点学ASP.NET之基础概念——HttpHandler

    概述 HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的 ...

  5. 一起学AI:核心基础概念

    一起学AI:核心基础概念 AI基础概念 什么是学习率? batchsize和epoch分别是什么? 梯度消失与梯度爆炸是什么? 什么是过拟合.欠拟合和泛化? 归一化.正则化.标准化是什么? 线性回归和 ...

  6. 从零开始学ASP.NET(基础篇)

    原作者:蓝鲸 出处:5D多媒体 学ASPNET与ASP有区别,这种区别不是语言上的,而是思路上的区别.ASP是纯面向过程的,而ASPNET是完全面向对向的.这种区别使我们在编程的结构设计上要与ASP有 ...

  7. 回头再学Asp.net系列--基础篇(一)

    Web Page的生命周期与Postback 参考 http://www.cnblogs.com/artech/archive/2007/04/06/702658.html 了解ASP.NET Web ...

  8. 回头再学Asp.net系列--基础篇(六)

    随着面向对象分析与设计的发展,一个良好的设计,核心原则之一就是将变化隔离,使得变化部分发生变化时,不变部分不受影响(这也是OCP的目的).为了做到这一点,要利用面向对象中的多态性,使用多态性后,客户类 ...

  9. java u003_我在B站学编程 DAY-003 JAVA基础概念和语法

    八进制:0-7组成 例子: 八卦 指令在机器中以机器码格式输出,机器码一次原始输出位数是八的倍数,即以字节长度为最小单位输出. 十六进制:0-9,abcde...组成,0X开头 十六进制可以更紧凑地表 ...

最新文章

  1. 使用 ASP.NET 加密口令
  2. No module named 'StringIO'
  3. tcp与ip协议的区别
  4. jmeter吞吐量_深入理解Jmeter常用定时器
  5. .Net Core 3.1,这匹黑马,2020年值得所有程序员重视!
  6. Hadoop伪分布式配置和搭建,hadoop单机安装,wordcount实例测试,hadoop安装java目录怎么找,问题及问题解决方法
  7. zend studio php 5.5,Zend Studio使用教程:在Zend Studio中调试PHP(5/5)
  8. Makefile for Sphinx documentation
  9. easyui datagrid中添加右键菜单事件
  10. PInvoke在 2.0 3.0的时候正常 升级到4.0后出错。
  11. ios9提取安装包ipa_iOS 获取App的ipa包以及资源文件
  12. 2022年最全Java面试题库基础篇
  13. ios描述文件安装的问题
  14. Redis学习资料汇总
  15. PADA: Example-based Prompt Learning for on-the-fly Adaptation to Unseen Domains
  16. iPhone在线音乐盒,代码开源
  17. 程序员的国庆大阅兵,太好好好好好好看了吧 ……
  18. 【知识兔】会计财务最常用的10个公式函数,必须收藏
  19. Unity事件函数OnMouseDown生效条件
  20. mysql有什么不同_mysql 和 mysql2 有什么不一样

热门文章

  1. Oracle 数据库基础学习 (六) 子查询
  2. python 基础篇(一)--linux命令篇
  3. 第一章 Linux系统简介
  4. FlexPaper 2.2.1介绍与提取嵌入的文档
  5. MFC一一添加WM_USER自定义消息
  6. UITableView从storyBoard加载UITableViewCell的细节以及布局内边距问题
  7. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
  8. 卫星参数大全_【视频】早期国外做工精良的海事卫星电话机拆解
  9. FreeNOS源码编译
  10. 基于CAD/CAM的三维控件