IIS体系结构及配置系统
一、IIS中的组件
- IIS
- Internet Information Service
1.1 协议侦听器(Protocol Listeners)
1.1.1 作用
- 接收特定于协议的请求,将它们发送到IIS进行处理,然后将响应返回给请求者
1.1.2 HTTP协议侦听器——HTTP.sys
- 默认情况下,IIS提供HTTP.sys作为协议侦听器,用于侦听HTTP和HTTPS请求
- 若要支持使用HTTP和HTTPS以外的协议的服务和应用程序,可以使用Windows Communication Foundation(WCF)之类的技术
1.1.3 HTTP.sys的优点
- 内核模式缓存
- 缓存的响应请求将在不切换到用户模式的情况下提供。
- 内核模式请求排队
- 由于内核将请求直接转发到正确的工作进程,因此请求在上下文切换中的开销较小
- 如果没有工作进程可用于接受请求,则内核模式请求队列将保留该请求,直到工作进程将其接收为止。
- 请求预处理和安全过滤
1.2 服务
- 在IIS 7和更高版本中,以前由万维网发布服务单独处理的功能现在在两个服务之间分配
- 万维网发布服务(WWW Service)
- Windows进程激活服务(WAS)
- 这两个服务在同一Svchost.exe进程中作为LocalSystem运行,并共享相同的二进制文件
1.2.1 万维网发布服务(WWW Service)
1.2.1.1 作为HTTP.sys的侦听器适配器
- WWW服务主要负责配置HTTP.sys
- 在配置更改时更新HTTP.sys
- 在请求进入请求队列时通知WAS
1.2.1.2 作为网站的计数器
- 性能计数器仍然是WWW服务的一部分,但它们是HTTP特定的,不适用于WAS
1.2.2 Windows进程激活服务(WAS)
- 在IIS 7和更高版本中,Windows进程激活服务(WAS)代替WWW服务管理应用程序池配置和工作进程
- 可以对HTTP和非HTTP站点使用相同的配置和过程模型。
- 可以在没有WWW服务的情况下运行WAS
1.2.2.1 配置管理
- 在启动时,WAS从ApplicationHost.config文件中读取某些信息,并将该信息传递到服务器上的侦听器适配器
- 侦听器适配器是在WAS和协议侦听器之间建立通信的组件
- 侦听器适配器收到配置信息后,便会配置其相关的协议侦听器,并准备使侦听器侦听请求
1.2.2.2 流程管理
- WAS管理HTTP和非HTTP请求的应用程序池和辅助进程
- 当协议侦听器接收到客户端请求时,WAS将确定工作进程是否正在运行
- 如果应用程序池已经具有正在处理请求的工作进程,则侦听器适配器将请求传递到工作进程进行处理
- 如果应用程序池中没有工作进程,则WAS将启动一个工作进程,以便侦听器适配器可以将请求传递给它进行处理
1.2.2.3 对非Http请求的支持
- 利用TCP监听器、命名管道监听器和MSMQ监听器提供基于TCP、命名管道和MSMQ传输协议的监听支持
- TCP监听器、命名管道监听器和MSMQ监听器和相应的监听适配器定义在SMSvcHost.exe中
二、IIS中的请求处理
2.1 IIS中的HTTP请求处理
- 当客户端浏览器对Web服务器上的资源发起HTTP请求时,HTTP.sys会拦截该请求。
- HTTP.sys与WAS联系以从配置存储中获取信息。
- WAS从配置存储applicationHost.config请求配置信息。
- WWW服务接收配置信息,例如应用程序池和站点配置。
- WWW服务使用配置信息来配置HTTP.sys。
- WAS为发出请求的应用程序池启动工作进程。
- 工作进程处理该请求,并将响应返回给HTTP.sys。
- 客户端收到响应。
三、配置系统
3.1 全局配置
- 在根(或全局)级别,有两个单独的文件:
- applicationHost.config
- windows\system32\inetsrv\config\applicationHost.config
- 保留Web服务器(IIS)设置的全局默认值
- machine.config
- \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
- 保存.NET Framework设置的全局默认值
- 包括一些ASP.NET设置
- 其余设置在web.config中(在同一文件夹)
- 包括一些ASP.NET设置
- applicationHost.config
3.2 配置文件结构
- 配置文件之间存在继承关系
3.3 配置系统的核心
- 配置系统的核心是声明式架构
- 配置架构跨越多个文件,这些文件位于一个众所周知的位置
- system32\inetsrv\config\schema
- 配置架构跨越多个文件,这些文件位于一个众所周知的位置
- 以下三个文件构成了Web服务器平台的统一架构:
- IIS_schema.xml
- 涵盖Windows激活系统和IIS Web服务器设置以及部分组。
- ASPNET_schema.xml
- 在部分组中介绍了ASP.NET设置。
- FX_schema.xml
- 在各个部分组中介绍了其他.NET Framework设置
- IIS_schema.xml