Asp.net底层就是用户通过输入网址,然后请求IIs服务器的流程,在这个过程中有一个重要的部件就是ISAPI,这是一个底层的win32API,在扩展方面比较困难,多用于接口之间的桥接,.net和IIS通过IISAPI进行交互的,IIS中后缀名.aspx,通过应用程序扩展映射到.net的ISAPI扩展的dll,这个dll就是aspnet_isapi.dll,访问都是通过这个dll中相应的映射完成的。

1.通过asp.net的映射机制使用后缀名从ISAPI中获取到接收的请求,并将请求的路由到相应的handler,aspnet_isapi.dll会开启一个工作进程w3wp.exe(使用程序池进行创建,右侧使用无则创建)

2.ISAPIRuntime.ProcessRequest(ecb),将句柄封装为HttpWorkingRequest

3.HttpRuntime.ProcessRequest(wr)这个操作的作用:1.创建一个HttpContext实例,里面封装了浏览器报文的信息2.创建一个HttpApplication实例,首先查看是否有空余的application,没有则按照global.asax类型创建,这个是用来处理报文数据.3.调用Init()方法,初始化管道事件,同时触发管道执行事件。

HttpContext这个对象在整个请求的生命周期中都是存在的,封装了报文的信息,同时包含了所有的请求过程中的重要对象,包括Ruquest、Responese、Application、Cache、Server ,HttpContext.Current可以去访问这些对象,HttpContext,Items这个集合中可以保存一些数据信息,这些数据的生命周期就是整个的请求过程,BeginRequest-EndRequest,HttpContext是在开始请求的时候被创建,是进程内唯一对象。

HttpApplication是Web程序处理的地方,他被映射到Global.asax类中,这个类继承了HttpApplication,在Global中的每一个事件都是以Application_为前缀的事件实现,这也就避免了自己手动创建这些事件委托。每个asp.net的虚拟目录都是在自己的应用程序域中执行,每个应用程序域可以有多个来自管理池的HttpApplication对象,这就是可以同时执行多个请求而互相不影响的原因。

Web.Config具有全局通知的作用,会重新创建应用程序域,关闭旧的应用程序域名。HttpApplication.Init()->HttpApplication.ResumeSteps,执行所有的处理器,这些处理器被映射到global.asax

Asp.net底层机制的更多相关文章

  1. [翻译]了解ASP.NET底层架构(八)

    原文地址:http://www.cnblogs.com/tmfc/archive/2006/09/04/493304.html [翻译]了解ASP.NET底层架构(完) [翻译]了解ASP.NET底层 ...

  2. (转)Asp.Net 请求处理机制

    原文:http://www.cnblogs.com/cilence/archive/2012/05/28/2520712.html Asp.Net 请求处理机制   前言 我们都知道Web请求响应是基 ...

  3. ASP.NET底层与各个组件的初步认识与理解 (转载)

    ASP.NET底层的初步认识与理解   最近在国外的网站乱走一通,发现一些比较好的文章,收集整理加于自己的理解,作为笔记形式记录下来,让以后自己有个回忆. ASP.NET是一个非常强大的构建Web应用 ...

  4. ASP.Net请求处理机制初步探索之旅 - Part 1 前奏

    开篇:ASP.Net是一项动态网页开发技术,在历史发展的长河中WebForm曾一时成为了ASP.Net的代名词,而ASP.Net MVC的出现让这项技术更加唤发朝气.但是,不管是ASP.Net Web ...

  5. ASP.Net请求处理机制初步探索之旅 - Part 2 核心

    开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):Ht ...

  6. ASP.Net请求处理机制初步探索之旅 - Part 3 管道

    开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...

  7. ASP.NET运行机制原理

    ASP.NET运行机制原理 一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过 ...

  8. ASP.NET运行机制原理 ---浏览器与IIS的交互过程 自己学习 网上查了下别人写的总结的很好 就转过来了 和自己写的还好里嘻嘻

    一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问 ...

  9. WebForm页面生命周期及asp.net运行机制

    1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不 ...

随机推荐

  1. e638. 向剪切板获取和粘贴图像

    // If an image is on the system clipboard, this method returns it; // otherwise it returns null. pub ...

  2. e637. 向剪切板获取和粘贴文本

    This examples defines methods for getting and setting text on the system clipboard. // If a string i ...

  3. php中获取网站访客来源的关键词方法

    php中获取网站访客来源的关键词方法,收集了 <?php class keyword{ public function getKeyword($referer){ if(strpos($refe ...

  4. Oracle 添加主键和索引

    数据的主键和索引一般情况下都是必须的,特别是表有大量数据的时候,索引和主键更是必不可少,这样可以提供数据的查询效率: 一.创建表的同时创建主键约束 (1)无命名 create table studen ...

  5. 使用Visual Studio将C#生成DLL文件的方法

    1.命令方式 打开Visual Studio安装目录下的开发人员命令提示 译 File.cs 以产生 File.exe csc File.cs 编译 File.cs 以产生 File.dll csc ...

  6. Navicat for MySQL使用手记(上)--创建数据库和表

    在管理MySQL数据库的图形化工具中,最为熟知的就是phpMyAdmin和Mysql-Front了,今天跟大家分享另外一个管理mysql数据库的另外一个利器---Navicat MySQL. Navi ...

  7. brew 的 调度工具DBGPRINTF 和 c语言的 printf

    在官方的文档中是这样备注DBGPRINTF Prototype void dbgprintf(const char *pszFormat,...); Description This function ...

  8. android开发源代码分析--多个activity调用多个jni库的方法

    android开发源代码分析--多个activity调用多个jni库的方法 有时候,我们在开发android项目时会遇到须要调用多个native c/jni库文件,下面是本人以前实现过的方法,假设有知 ...

  9. CUGBACM Codeforces Tranning 1 题解

    链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=61581#overview 描写叙述:非常老的CF题,题不错,拿来训练正好. 做的时 ...

  10. 超全面的JavaWeb笔记day12<Jsp&JavaBean&El表达式>

    1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...