当一个http请求发送过来并被IIS机收到之后,IIS首先通过你请求的页面类型为其加载相应的dll文件,然后在处理过程中将这条请求发送给能够处理这条请求的模块,而在ASP.NET中这个模块就叫做HttpHandler,为什么aspx这样的文件可以被服务器处理,那是因为在服务器端有默认的HttpHandler专门处理aspx文件,IIS再将这条请求发送给能够处理这条请求的模块之前,还需要经过一些HttpModule,这些都是系统默认的Modules,而且在这个http请求传到HttpHandler之前要经过不同的HttpModuls的处理,这就像我们如果要乘坐国际航班飞抵异国他乡的话,在 你真正坐上飞机前,要经过购买机场建设费,办理登记手续核实身份,进行行李打包托运,进行安全检察,现在又要进行体温等检察一样,需要经一系列的严格的手 续。这样做有什么好处,一是为一些必须的过程,二是为了安全性,三是为了提高效率,四是为了我们能够在更多的环节上进行控制,即增强了我们的控制能力。

ASP.NET运行原理如图:

说明:HttpModule模块是一个组件,可以注册为ASP.NET 3.5请求生命周期的一部分,当处理该组件时,该组件可以读取或更改请求或响应。HttpModule模块通常用于执行需要监视每个请求的特殊任务,如安全或站点统计信息。

图中为我们展示了一个http请求有可能经过的四条路线。当你第一次访问这个页面时这个请求首先依次经过HttpModuls和HttpHandler的处理,而在HttpHandler的处理中服务器会为你转到你真正要访问的页面,然后通过ASP Engine来找到这个页面背后的类,并实例化为一个临时对象,再此过程中会触发一系列的事件,其中一部份的事件需要经过对象中的方法处理,之后服务器会将这个处理后页面发移交给Response对象,然后由Response对象将这个页面发送到客户端。这就是第一条路线(123456)。而当你在这个页面上进行重新提交一些信息,并继续向服务器发送请求时,因为你的服务器之间的会话已经建立,对于你所在的那个临时对象在服务器中已经建立,所以不用再经过初始化页面的工作,故这第二条路线是按照 HttpModuls,HttpHandler,然后直接与临时对象交互,然后返回的(789)。第三条路线与第二条不同的是在处理请求时如果涉及到需要调用ASP Cache,既ASP 缓存的,而临时对象回将直接从ASP 缓存提取信息并返回(10、11、12、13)。这第四条路线就是当你刷新这个页面的时候,服务器接收到时发现这个请求先前已经处理过了,并将处理结果存储到由一个默认的HttpModule管理的输出缓存中了,那么我们就可以直接从这个缓存提取信息并返回,而无需再重新处理一遍了(14、15)。

ASP.NETt运行原理和运行机制相关推荐

  1. ASP.NET运行原理和运行机制

    一.ASP.NET运行原理 当一个http(abbr. 超文本传输协议  hypertext transport protocol )请求发送过来并被IIS机收到之后,IIS(IIS 互联网信息服务信 ...

  2. 张勋说:简述棒磨机的工作运行原理和磨损机制(图文)

    1 棒磨机的工作运行原理 棒磨机采用筒形旋转装置,外沿齿轮传动,两仓,格子型,由给料部.出料部.回转部.传动部 等主要部分组成.中空轴采用铸钢件,内衬可拆换,回转大齿轮釆用铸件滚齿加工,筒体内镶有耐磨 ...

  3. Java 运行原理和核心机制

    一.Java初体验HelloWorld 1.1 实现步骤 将 Java 代码编写到扩展名为 .java 的文件中.         通过 javac 命令对该 java 文件进行编译.         ...

  4. JSP运行原理及运行过程

    学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制. 学习DRP时,再次接触了JSP,在原来基础上有了更深的了解,了解了它的执行原理 1,JSP的运行原 ...

  5. 运行原理_JMeter运行原理

    前几篇我们讲解了JMeter的组成部分, 下面我们来了解JMeter的运行原理. 接触过LoadRunner的读者应该知道, LoadRunner可以选择是以进程方式还是以线程方式来运行, 在JMet ...

  6. flink运行原理_Flink运行架构剖析

    本文主要介绍 Flink Runtime 的作业执行的核心机制.首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对 ...

  7. 怎么去观察php运行原理,php运行原理如何理解,具体看代码?

    PHP 测试 Hello World'; ?> 这个是一段简单的php代码,文件是hello.php,我通过www.xxx.com/hello.php请求这个页面的时候,php是如何解析数据返回 ...

  8. 2011年9月19日 面试重点:asp.net运行原理和生命周期

    面试重点:asp.net运行原理和生命周期 1.ispostback回调机制 isPostBack=false !IsPostBack==ture 当前页面是第一次加载 IsPostBack 由于用户 ...

  9. IIS Web 服务器/ASP.NET 运行原理基本知识概念整理

    前言: 记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别? 促使我对进程池进了知识的学习,所以记录一下学习的笔记. 我们知道现在 ...

最新文章

  1. the user operation is waiting for building workspace to complete解决办法
  2. 国内NLP竞赛平台一览(附平台连接)
  3. 说一说MVC的CSRF(三)
  4. BZOJ1146 [CTSC2008]网络管理Network 树链剖分 主席树 树状数组
  5. esxi备份,datastore,vmdk
  6. mysql导出表部分数据
  7. access横向求和sum_数据横向、纵向及交叉求和,同事用Alt+=号一键搞定!不需要函数...
  8. windows程序设计一 最简单的windows程序
  9. Vue实例常用的4个选项
  10. Linux设置小红点键盘,让Ubuntu完美支持Thinkpad小红点Trackpoint
  11. java中 输入地址,查询经纬度坐标实例
  12. 番茄时钟(提升专注力,减少中断)- 番茄工作法
  13. 百川云旺客服申请测试流程
  14. 基于javaweb+SSM农产品水果店销售管理系统
  15. 02.微软官方启动U盘装机教程
  16. Hopefield神经网络
  17. 软件测试app访问相机,PlayMemories Mobile应用实测,让相机成为你手机的外置摄像头...
  18. MySQL日历表-报表常用
  19. java项目-第122期ssm校园快递物流管理系统-计算机毕业设计项目
  20. 嵌入式linux指令

热门文章

  1. 深圳市租房提取住房公积金攻略
  2. 报童、钱包和迪米特法则(设计模式迪米特原则经典论文翻译)
  3. 如何访问Kubernetes集群?【Kubernetes集群X509认证方式】
  4. 使用ElasticSearch进行可扩展搜索
  5. 动词语气(虚拟语气)
  6. Jackson:Cannot construct instance of **** (although at least one Creator exists):
  7. python3小项目——爬取招聘信息(智联招聘)
  8. 线段的逆时针方向(顺时针、正上方、正下方、线段上)、相交判断(图解)
  9. python+milvus实现一个以图搜图系统
  10. 2. STM32F4 USB协议研究 - SD卡模拟U盘