Asp.Net生命周期系列二

简介:

在上回书开始的时候我们提到博客园的IIS看了一眼我的请求后就直接交给ASP.NET去处理了,并且要求ASP.NET处理完之后返回HTML以供展示。

那么我们不仅要问:

1,    IIS肯定是没有眼睛的啦,那它是怎么“看”的呢?

2,    在“看”到了.aspx的页面请求后又是如何把它交给ASP.NET的呢?如果不做任何处理那它的存在又有什么意义呢?

3,    ASP.NET收到这个处理请求后又是如何做的呢?它是怎么创建Context对象又是如何“雇佣”项目经理HttpApplication对象的呢?

本文将就这些问题进行深入而简单的探讨。

IIS通过请求的后缀去看,IIS中的isapi就是它的眼睛和路由,我们可以通过访问IIS的站点的属性—》主目录—》配置 来查看它的路由映射

我 们可以发现,当请求的Extension是.aspx时,对应的Executable path是C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 。就是当IIS查找对应的请求映射表时,发现后缀是.aspx则直接交给aspnet.isapi.dll文件处理。

然而,在“看”的方法方式上,IIS5和IIS6有一些不同。

IIS5 通过inetinfo.exe进程在TCP端口(默认是80)来“看”那些进来的Request。正如我们刚才看到的,如果这些Request是需要 aspnet_isapi.dll来处理,则aspnet_isapi.dll创建(不太确定worker process是不是aspnet_isapi.dll创建的,但是它们通过命名管道来交互)并持续监视一个aspnet_wp.exe进程,它就是 asp.net最重要的组件:worker process。几乎所有的工作都是在这个进程中完成,它在IIS6中被改名叫做w3wp.exe。

 

IIS6 则通过内核模式中的HTTP.SYS来“看”那些进来的Request。HTTP.SYS把进来的Request发送到相应的Application Pool(应用程序池)。应用程序池再把Request传递给aspnet_isapi来进行创建worker process的工作。IIS6中的worker process已经是w3wp.exe了。

其实aspnet_isapi在创建了 work process进程和加载了CLR完成了托管环境的布局以后就什么也不管了,剩下的就交给了work process进程去管理了,而wp进程则把所有的任务都转交给了HttpRuntime去处理,HttpRuntime完成了以后的所有工作,包括雇佣 项目经理(Httpapplication),HttpRunTime根据webconfig创建了HttpModule并放到了 Httpapplication的工作表中,而Httpapplication则是根据这个工作表去工作的,并且HttpRunTime也创建了 Context这个箱子,并把它交给了Httpapplication。以后的事情就是Httpapplication找到的两个程序员 HttpModule和HttpHandler去完成了。

总结一些HttpRunTime做了哪些事情:

第一:雇佣了HttpApplication。。。。

第二:根据配置文件创建了HttpModule列表。HttpApplication就是按照这个工作列表去工作的。。。。

第三:创建了上下文环境(就是Context这个箱子,箱子中包括Request和Response两大主要对象),并转交给了HttpApplication的手中。。。。

第四:等着返回结果。。。。

如果您看完这篇文章有些不理解,请首先阅读系列一

可是还有些问题需要解决:

第一:HttpModule到底是什么东西呢,HttpApplication为什么会按照它的工作列表去工作呢?

第二:HttpHandler又是怎么去处理页面的请求的呢,又是怎么生成Html代码返回给留言器的呢?

其实HttpModule和HttpHandler是Asp.Net生命周期中两大非常重要的对象,我打算单独介绍,还请接续关注......

分类:  ASP.NET
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3179977.html ,如需转载请自行联系原作者
相关文章
|
6月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
234 0
|
JSON API 数据格式
.net core工具组件系列之Autofac—— 第一篇:Autofac系列Autofac的几种常见注册方式、生命周期和AOP
使用Autofac进行服务注册实践:新建三个项目,分别是webapi项目 Wesky.Core.Autofac以及两个类库项目 Wesky.Core.Interface和Wesky.Core.Service。在Webapi项目下,引用Autofac的三个包:Autofac、Autofac.Configuration和Autofac.Extensions.DependencyInjection 。
1908 1
.net core工具组件系列之Autofac—— 第一篇:Autofac系列Autofac的几种常见注册方式、生命周期和AOP
|
前端开发 .NET 开发框架
ASP.NET Core 2 学习笔记(二)生命周期
原文:ASP.NET Core 2 学习笔记(二)生命周期 要了解程序的运行原理,就要先知道程序的进入点及生命周期。以往ASP.NET MVC的启动方式,是继承 HttpApplication 作为网站开始的进入点,而ASP.NET Core 改变了网站的启动方式,变得比较像是 Console Application。
1188 0
|
前端开发 .NET
ASP.NET MVC5请求管道和生命周期
请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。所有的HTTP请求都会进入IHttpHandler,有IHttpHandler进行最终的处理,而IHttpModule通过订阅HttpApplication对象中的事件,可以在IHttpHandler对HTTP请求进行处理之前对请求进行预处理或IHttpHandler对HTTP请求处理之后进行再次处理。
1358 0
|
.NET 程序员 开发框架
asp.net生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37540769 当用户起一个请求到服务器,服务器接收到请求并将该页面返回给浏览器。
957 0
|
.NET
ASP.NET页面生命周期与应用程序生命周期
ASP.NET页面生命周期与应用程序生命周期 页面生命周期 页面生命周期执行一系列步骤:页面的初始化、实例化控件、还原和维护状态、运行事件处理程序代码、呈现。
914 0
|
.NET 开发者 开发框架
记不住ASP.NET页面生命周期的苦恼
介绍 对于ASP.NET开发者,理解ASP.NET的页面生命周期是非常重要的。主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性。但是记忆和理解页面生命周期里提供的事件处理方法(method)非常困难。
950 0
|
Web App开发 .NET 程序员