admin 管理员组

文章数量: 1184232


2024年3月13日发(作者:织梦物语)

.NET (C#) Internals: 应用程序与页面生命周期(意译)

1、引言

2、两个处理步骤

2.1、创建环境

2.2、用触发的MHPM事件处理请求

3、什么事件中应该做什么

4、示例代码

5、深入页面事件

1、引言

这篇文章我们将试图理解,从用户发送一个请求直到请求呈现到浏览器发生的事件的差异。因此,我们首

先将介绍解请求的两个概括的步骤,接下来我们将介绍‘HttpHandler’,‘HttpModule’和

页面对象发出的事件的差异。随着我们的事件旅程,我们将理解这些事件的逻辑。

2、两个处理步骤

请求处理可以总结为如下所示的两个处理步骤。用户发送一个请求到IIS:创建处理请

求的环境。换句话说,创建应用程序对象、request、response和context对象去处理请求。

一旦环境已经创建,请求通过使用modules、handlers和page对象的一系列事件处理。为了简化可以称为

MHPM(module、handler、page、module event),我们将在后面详细讨论。

图1、请求处理的两个步骤

在接下来的各节,我们将知道更多关于这两个步骤的细节。

2.1、创建环境

step 1:用户发送一个请求到IIS。IIS首先检查哪个ISAPI扩展可以处理这个请求,这取决于请求的文件扩

展名。举例来说,如果请求页面是‘.ASPX’,它将被传送到‘aspnet_’来处理。

step 2:如果这是www站点的第一个请求,ApplicationManager类将创建一个应用程序域,www站点运

行于其中。我们都知道在同一个IIS上,两个web应用程序的应用程序域是独立的(隔离的)。因此一个应

用程序域中问题不会的影响到其它应用程序域。

step 3:新建的应用程序域创建宿主环境,如HttpRuntime对象。一旦宿主环境被创建,必要的

核心对象如HttpContext、HttpRequest和HttpRespone对象也被创建。

step 4:一旦所有的核心对象被创建,HttpApplication对象将被创建去处理请求。如果系统中有

文件,文件对象将被创建。

【注意】:文件继承自HttpApplication类;第一次页面连接到应用程序,一个

HttpApplication

新实例将被创建。为了最大化性能,

HttpApplication

实例可能被多个请求重用。

step 5:接下来HttpApplication对象分配给核心对象来处理页面。

step 6:然后HttpApplication通过HttpContext、HttpRequest和HttpRespone事件开始处理请求。它触发MHPM

事件处理请求。【更多细节】:/en-us/library/

图2、创建环境

下图解释了请求的内部对象模型。最高层是运行时,它已经创建一个应用程序域

(AppDomain),相应地有HttpRuntime包括request、respone、context对象。


本文标签: 请求 创建 对象 处理 应用程序