IIS架构与HTTP请求处理流程(2)

原创 2008年09月28日 09:25:00
ASP.NET Web编程原理 之
IIS架构与HTTP请求处理流程(2)

(续上文

8.1.2 应用程序池与工作者进程


       应用程序池(Applicaion Pool”是Windows Server为提升Web服务的性能和可靠性而引入的一个Web程序隔离机制。

       一个应用程序池可包含一个或多个Web应用程序。ASP.NET Web应用程序必须运行在一个应用程序池中。

       Windows Server中,一个或多个“工作者进程(Worker Process”为应用程序池提供服务,停止一个应用程序池将导致这些工作者进程被关闭,这时,所有发往此应用程序池中Web应用程序的HTTP请求将收到“503服务不可用”的响应信息。

       87展示了一台Web服务器上正在运行的应用程序池。

 

应用程序池

87 IIS 7中的应用程序池

 

       87所示,本台Web服务器上的设置了3个应用程序池,每个应用程序池中可运行多个Web应用程序,图中DefaultAppPool这一应用程序池运行了5Web应用程序。每个应用程序池都可以加载特定版本的.NET Framework,以对ASP.NET应用程序提供支持。在IIS 7中,应用程序池有两种运行模式——经典模式和集成模式

       经典模式下,IIS7应用程序池运行方式同IIS 6 [1]

       集成模式下,IIS 7直接预装载.NET Framework,从而为ASP.NET应用程序提供了更好的性能。

       IIS管理器中可以随时启动和停止某个应用程序池。

       Windows Server上运行应用程序池的系统帐号是“NetworkService”。在后面的章节中可以看到在部署ASP.NET网站时往往需要给此帐号设置特定的权限(比如允许ASP.NET应用程序向某文件夹中添加文件)。

       下面深入介绍一下IIS的系统架构以及Windows Server是如何响应HTTP请求的。


8.1.3 IIS的系统架构

       IIS 6(运行于Windows 2003 Server)的架构如 88所示。



 IIS 6架构

88 IIS 6的架构

 

 

       88中可以看到,IIS 6架构由以下几个部分组成:

(1)HTTP.SYS:运行于Windows核心(Kernel)的一个组件,它负责侦听(Listen)来自于外部的HTTP请求(通常来自网络中另一台计算机上的浏览器),根据请求的URL将其转发给相应的应用程序池,由运行于应用程序池中的工作者进程来响应此HTTP请求。当此HTTP请求处理完成时,它又负责将处理结果发送出去(其接收者通常为发出HTTP请求的浏览器)。

       为了提供更好的性能,HTTP.SYS内部建立了一个缓冲区,将最近的HTTP请求处理结果保存起来,如果发现某个HTTP请求“不久以前”处理过了(即在缓冲区中可以找到),它就简单地直接从缓冲区中取出这些结果发回给客户端(通常为发出HTTP请求的浏览器)。

(2)InetInfo:在IIS 5时代,InetInfoIIS服务的主进程,在IIS 6中,它不再负责处理HTTP请求,但它继续负责管理除了WWW服务之外的其他互联网服务,比如用于文件传输的FTP服务和用于邮件收发的SMTP服务。

       InetInfo内部维护了一个元数据库(Metabase),在这个数据库中存入了一些重要的信息,这些信息对于维护各种互联网服务(比如WWWFTP)等是必不可少的。

(3)Worker Process:负责处理HTTP请求,被译为“工作者进程”,事实上,它是由一个可执行程序W3WP.EXE运行时所生成的一个进程[2]每一个工作者进程内部都可以管理一个或多个ASP.NET应用程序。工作者进程运行于一个应用程序池(Application Pool)中。IIS 6可以创建多个应用程序池,并指定某个ASP.NET应用程序在特定的应用程序池中运行( 89)。



 设定程序池

89 设定ASP.NET网站所属的应用程序池(图截自Windows 2003 Server

 

       一般情况下,一个应用程序池只有一个工作者进程,但也可通过配置必要的参数让多个工作者进程同时运行在同一个应用程序池中,在这种情况下,这个应用程序池被称为“Web GardenWeb园)”。

(4)WASWeb Admin Service:这是一个监控程序,它一方面可以存取放在InetInfo元数据库(Metabase)中的各种信息,另一方面也负责监控应用程序池(Application Pool)中的工作者进程的工作状态况,必要时它会关闭一个老的工作者进程并创建一个新的取而代之。



[1] IIS 6中应用程序池的运行方式后文有详细介绍

[2]“进程(Process)”是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。如用通俗的语言来表达,可以简单地将“进程”理解成一个正在运行的程序。


(请看下一部分

IIS是如何处理ASP.NET请求的

英文原文:Beginner’s Guide: How IIS Process ASP.NET Request   前言   每次服务器接受到请求,都要先经IIS处理。这不是一篇描述AS...
  • Linux7985
  • Linux7985
  • 2015年03月05日 11:12
  • 5939

Java Struts2 的请求处理流程详解

一、Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它...
  • henryzhang2009
  • henryzhang2009
  • 2015年04月03日 23:25
  • 4482

struts2处理请求的过程

官方的流程图: 客户端对tomcat服务器发出请求,将请求封装成HttpRequest对象,并进行预处理操作(如设置编码等); 通过web.xml文件 找到struts2的前端...
  • E01014165
  • E01014165
  • 2016年07月17日 17:59
  • 2959

IIS架构与HTTP请求处理流程(2)

IIS架构与HTTP请求处理流程(2) (续上文) 8.1.2 应用程序池与工作者进程        “应用程序池(Applicaion Pool)”是Windows...
  • vjo6n4ylg
  • vjo6n4ylg
  • 2015年01月27日 20:32
  • 185

[Django架构流程分析]Django HTTP请求的处理流程

注:以下内容转载自 现代魔法学院 网站的 Django HTTP请求的处理流程 一文,仅供学习使用。         Django 和其他 Web 框架的 HTTP 处理的流程大致相同,Djang...
  • dapeng0802
  • dapeng0802
  • 2015年11月15日 21:53
  • 516

Http请求处理流程.doc

  • 2009年03月06日 15:43
  • 202KB
  • 下载

Http请求处理流程

  • 2011年05月12日 09:41
  • 663KB
  • 下载

Asp.Net构架(Http请求处理流程) - Part.2 Http Handler 介绍

转载:http://www.tracefact.net/Asp-Net/Introduction-to-Http-Handler.aspx  Http Handler 介绍 引言 在 Par...
  • zlg_2008
  • zlg_2008
  • 2011年11月04日 11:14
  • 241

架构与反射——Struts2开发过程与处理流程解析

架构与反射——Struts2开发过程与处理流程解析 一、struts2开发步骤: (1)定义一个请求页面; (2)开发Action类只要求:     A. 为每个请求参数都提供Field,并为...
  • Dreamcode
  • Dreamcode
  • 2014年04月07日 18:00
  • 3119

Asp.Net构架(Http请求处理流程)

我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net。他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写CodeBehind代码,以实现某个特定的功能...
  • u013948191
  • u013948191
  • 2015年07月05日 10:09
  • 279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IIS架构与HTTP请求处理流程(2)
举报原因:
原因补充:

(最多只允许输入30个字)