浅谈ASP.NET ISAPI

开发 后端
本文简单介绍ASP.NET ISAPI,以及介绍ASP.NET ISAPI和Worker Process之间的通信通过他们之间的一组Pipe实现。

ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。

绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在***层。

IIS 5 的 ASP.NET请求处理过程

ASP.NET请求处理过程


对图的解释:

IIS 5.x 一个显著的特征就是 Web Server 和真正的 ASP.NET Application 的分离。作为 Web Server 的IIS运行在一个名为 InetInfo.exe 的进程上,InetInfo.exe 是一个Native Executive,并不是一个托管的程序,而我们真正的 ASP.NET Application 则是运行在一个叫做 aspnet_wp 的 Worker Process 上面,在该进程初始化的时候会加载CLR,所以这是一个托管的环境。

ISAPI: 指能够处理各种后缀名的应用程序。 ISAPI 是下面单词的简写 :Internet Server Application Programe Interface,互联网服务器应用程序接口。

IIS 5 模式的特点:

1、首先,同一台主机上在同一时间只能运行一个 aspnet_wp 进程,每个基于虚拟目录的 ASP.NET Application 对应一个 Application Domain ,也就是说每个 Application 都运行在同一个 Worker Process 中,Application之间的隔离是基于 Application Domain 的,而不是基于Process的。

2、其次,ASP.NET ISAPI 不但负责创建 aspnet_wp Worker Process,而且负责监控该进程,如果检测到 aspnet_wp 的 Performance 降低到某个设定的下限,ASP.NET ISAPI 会负责结束掉该进程。当 aspnet_wp 结束掉之后,后续的 Request 会导致ASP.NET ISAPI 重新创建新的 aspnet_wp Worker Process。

3、***,由于 IIS 和 Application 运行在他们各自的进程中,他们之间的通信必须采用特定的通信机制。本质上 IIS 所在的 InetInfo 进程和 Worker Process 之间的通信是同一台机器不同进程的通信(local interprocess communications),处于Performance的考虑,他们之间采用基于Named pipe的通信机制。ASP.NET ISAPI和Worker Process之间的通信通过他们之间的一组Pipe实现。同样处于Performance的原因,ASP.NET ISAPI 通过异步的方式将Request 传到Worker Process 并获得 Response,但是 Worker Process 则是通过同步的方式向 ASP.NET ISAPI 获得一些基于 Server 的变量。

【编辑推荐】

  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-08-05 11:14:33

ASP.NET ISA

2009-07-24 11:15:36

IIS ISAPI eASP.NET

2009-07-20 15:30:11

ASP.NET应用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-21 14:16:02

ASP.NET管道优化

2009-07-23 15:24:37

ASP.NET Ima

2009-07-27 16:19:59

ASP.NET报表控件

2011-08-23 10:58:59

2009-07-22 13:24:24

ASP.NET MVC

2009-08-05 15:29:33

ASP.NET For

2009-08-10 10:19:47

ASP.NET组件设计

2009-07-20 17:12:17

ASP.NET访问数据

2009-07-23 15:44:39

ASP.NET MVC

2009-07-28 16:03:23

ASP.NET状态服务

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-27 13:01:28

TreeViewASP.NET

2009-08-19 10:54:42

ASP.NET数据访问

2009-07-28 18:00:11

ASP.NET程序

2011-06-08 11:36:16

ASP.NETrender
点赞
收藏

51CTO技术栈公众号