ASP.NET的IIS ISAPI extension

开发 后端
本文介绍ASP.NET的IIS ISAPI extension,以及介绍IIS 6 以及 IIS7 经典模式的托管管道的架构和IIS 7 应用程序池的 托管管道模式 集成模式。

IIS 7 的 ASP.net 请求处理过程

IIS7 站点启动并处理请求的步骤如下图:

步骤 1 到 6 ,是处理应用启动,启动好后,以后就不需要再走这个步骤了。

ASP.net 请求处理过程

上图的8个步骤分别如下:

1、当客户端浏览器开始HTTP 请求一个WEB 服务器的资源时,HTTP.sys 拦截到这个请求。

2、HTTP.sys contacts WAS to obtain information from the configuration store.

3、WAS 向配置存储中心请求配置信息。applicationHost.config。

4、WWW 服务接受到配置信息,配置信息指类似应用程序池配置信息,站点配置信息等等。

5、WWW 服务使用配置信息去配置 HTTP.sys 处理策略。

6、WAS starts a worker process for the application pool to which the request was made.

7、The worker process processes the request and returns a response to HTTP.sys.

8、客户端接受到处理结果信息。

W3WP.exe 进程中又是如果处理得呢?? IIS 7 的应用程序池的托管管道模式分两种: 经典和集成。 这两种模式下处理策略各不相通。

IIS 6 以及 IIS7 经典模式的托管管道的架构

在IIS7之前,ASP.NET 是以 IIS ISAPI extension 的方式外加到 IIS,其实包括 ASP 以及 PHP,也都以相同的方式配置(PHP 在 IIS 采用了两种配置方式,除了 IIS ISAPI extension 的方式,也包括了 CGI 的方式,系统管理者能选择 PHP 程序的执行方式),因此客户端对 IIS 的 HTTP 请求会先经由 IIS 处理,然后 IIS 根据要求的内容类型,如果是 HTML 静态网页就由 IIS 自行处理,如果不是,就根据要求的内容类型,分派给各自的 IIS ISAPI extension;如果要求的内容类型是 ASP.NET,就分派给负责处理 ASP.NET 的 IIS ISAPI extension,也就是 aspnet_isapi.dll。下图是这个架构的示意图。

IIS 7 应用程序池的 托管管道模式 经典 模式也是这样的工作原理。 这种模式是兼容IIS 6 的方式, 以减少升级的成本。

IIS6 的执行架构图,以及 IIS7 应用程序池配置成经典模式的执行架构图


IIS 7 应用程序池的 托管管道模式 集成模式

而 IIS 7 完全整合 .NET 之后,架构的处理顺序有了很大的不同(如下图),最主要的原因就是 ASP.NET 从 IIS 插件(ISAPI extension)的角色,进入了 IIS 核心,而且也能以 ASP.NET 模块负责处理 IIS 7 的诸多类型要求。这些 ASP.NET 模块不只能处理 ASP.NET 网页程序,也能处理其他如 ASP 程序、PHP 程序或静态 HTML 网页,也因为 ASP.NET 的诸多功能已经成为 IIS 7 的一部份,因此 ASP 程序、PHP 程序或静态 HTML 网页等类型的要求,也能使用像是Forms认证(Forms Authentication)或输出缓存(Output Cache)等 ASP.NET 2.0 的功能(但须修改 IIS 7 的设定值)。也因为 IIS 7 允许自行以 ASP.NET API 开发并加入模块,因此 ASP.NET 网页开发人员将更容易扩充 IIS 7 和网站应用程序的功能,甚至能自行以 .NET 编写管理 IIS 7 的程序(例如以程控 IIS 7 以建置网站或虚拟目录)。

 

IIS 7 的执行架构图

以上介绍ASP.NET的IIS ISAPI extension。

【编辑推荐】

  1. 浅析ASP.NET的PageBase和MasterPage
  2. ASP.NET的XML Web服务方法
  3. 详解部署ASP.NET环境
  4. 实现ASP.NET全球化
  5. 解决ASP.NET AJAX脚本的错误问题
责任编辑:佚名 来源: IT168
相关推荐

2009-07-29 17:11:25

ASP.NET ISA

2009-07-24 10:52:42

ASP.NET ISA

2009-08-05 11:14:33

ASP.NET ISA

2009-07-24 10:57:41

ASP.NET ISAIIS6

2009-07-28 10:59:13

ASP.NET IIS

2009-07-24 14:03:02

IIS ASP.NET

2009-07-28 16:16:46

IIS5与IIS6.0ASP.NET

2009-07-28 11:34:02

ASP.NET架设

2009-07-24 13:41:03

IIS ASP.NET

2009-07-20 17:16:46

IIS中使用ASP.N

2009-07-28 17:17:19

ASP.NET概述

2009-08-03 14:22:33

什么是ASP.NET

2009-07-22 17:45:35

ASP.NET教程

2009-07-30 14:10:40

ASP.NET版本

2010-05-13 17:57:44

IIS服务器

2011-04-08 09:34:10

windows serIIS 7.0

2009-07-27 15:48:43

2009-07-29 11:19:03

JavaScriptASP.NET

2009-07-29 14:52:12

IScriptContASP.NET

2009-07-29 16:33:28

GreeterLogiASP.NET
点赞
收藏

51CTO技术栈公众号