IIS 概述及历史
• IIS 1
– 1996年2月
– Windows NT 3.51 Server
– 对三个通用Internet协议的支持(HTTP,FTP,Gopher)
– CGI(Common Gateway Interface)的支持
– 与Windows NT 平台集成(服务)
– 虚拟服务器
– 虚拟目录
– Internet 服务器API (ISAPI),允许使用高级语言(如C++)编写动态Web应用程序并将其合并到HTML页中的应用程序编程接口
– Internet 数据库连接器(Internet Database Connector,IDC)
– 支持基本认证
– 支持SSL 第1版
• IIS 2
–Windows NT 4 Server 的一个组件
– 新的增强的Windows 95 式的GUI
– 将IIS集成到Windows NT 安装程序
– 支持主机头名称
– 增强的日志特性
– 用于Internet数据查询(Internet Data Query,IDQ)
– HTML 管理器
– 密钥管理器
– 索引服务器
• IIS 3
– 1996年12月
– 最大的意义:服务端WEB脚本引擎(ASP)
– ActiveX组件技术
– 两种脚本语言(VBScript和JScript,实际上是Netscape的JavaScript)
– ASP支持开放式数据库连接(ODBC)和ActiveX数据对象(ADO)与数据库连接
– Microsoft事务管理器(MTS)
– Microsoft Visual InterDev
– Microsoft FrontPage 97 Server Extensions
• IIS 4
– 1998年3月
– Windows NT 4 Option Pack 3
– Microsoft 事务服务器(MTS)第2版
– Microsoft 消息队列服务器(MSMQ)第1版
– 索引服务器第2版
– Microsoft 证书服务器第1版
– IE 4.01(它最终帮助了微软赢得了与Netscape之间的浏览器战争)
– 个人WEB服务器(PWS)
– Microsoft 管理控制台(MMC)第1版
– SSL 第3版(128位加密)
– 配置数据库
– 确实可行的主机头(对HTTP 1.1的支持)
– 对SMTP和NNTP的支持
• IIS 5
–Windows 2000的组件
– 名称的变化(Internet 信息服务)
– 名为“缓冲池进程”的新应用程序模型
–Windows 2000 的目录服务集成
– 简化安装和管理IIS工作的新向导
– 支持WEB分布式创作和版本控制
• IIS 5.1
– IIS 5 的改进版
–Windows XP Professional 桌面平台
IIS 结构-IIS 4之前
• IIS 4 之前
– 整体式:所有的操作都基于进程内执行(in-processexecution)
– 使用ISAPI和C程序编写DLL,然后被加载到主要的IISWEB服务器进程(inetinfo.exe)并在这个进程中运行
• ISAPI 是为IIS 1开发的,用来在Windows NT 中代替UNIX Web服务器的公共网关接口(CGI)
• CGI使用一种进程外(out-of-process)执行模型
• IIS 3 是一个名为asp.dll的ISAPI扩展实现的,并没有改变IIS的结构。
• 工作不正常的ASP应用程序可能会关闭整个服务器
• 提高了WEB应用程序的性能
• 降低了可靠性
【提示】进程外执行模型:每一次请求,CGI都是以独立的进程来处理请求再返回。也就是说,即使是同一个请求,也要重开一个CGI进程来处理,一点缓冲的感觉也没有,整个服务器内存侵蚀严重,造成资源紧张
IIS 结构-IIS 4
• IIS 4是第一个在内部结构上发生重大变化的IIS版本
– Web应用程序的运行方式
• 进程隔离(process isolation)
• 保留ISAPI和ASP的性能优点,同时提供CGI的稳定性
– IIS配置信息的存储方式
• 进程隔离模式的优点
– 崩溃的进程外应用程序对在服务器上运行的其他应用程序没有影响
– 进程外应用程序可以在不依赖于服务器上的其他应用程序的情况下停止和重新启动,不会影响其他应用程序,简化了IIS上的应用程序的维护工作
– 可以将进程外应用程序配置为在出现故障之后自动重新启动
• 进程隔离的缺点
– 进程外应用程序的运行速度可能比进程内应用程序慢很多
– 进程外应用程序不能使用内置的IIS管理对象来访问IIS配置数据库属性
– 进程外应用程序占用比进程内应用程序更多的内存资源
• 进程外应用程序是由MTS的一个名为WEB应用程序管理器(Web Application Manager,WAM)的组件负责使用IIS应用程序能够在进程外运行。
• IIS管理服务
– IIS 4的一个基本组件
– 其他所有IIS服务的管理器
•WWW服务/W3SVC
•FTP
•SMTP
•NNTP
– 维护配置数据库
–
IIS 结构-IIS 5
• 又一次更改了IIS的结构
• IIS 4的进程外应用程序不能与在同一台计算机上的其他任何应用程序通信
• IIS 5提供了三个不同级别的应用程序保护
– 低(IIS进程)与IIS的版本1~3最初的单一结构一样,作为WEB服务器进程(inetinfor.exe)的一部分在进程内运行
– 中(共用的)作为一个单独的缓冲池进程在inetinfo.exe进程外运行,也就是说,它作为名为dllhost.exe的新COM+宿主进程内部运行的几个应用程序之一
– 高(独立的)在自己的隔离dllhost.exe进程中运行
IIS 结构-IIS 6
• IIS 6与IIS 5之间的区别
– HTTP请求的处理已经从inetinfo.exe进程直接移动到了内核中,以便获得更高的性能
– 支持两种新的应用程序隔离模型:
• “工作进程隔离模型”:全新的模型,它将用户开发的所有应用程序代码与核心IIS服务完全隔离
• IIS 5“隔离模型”:为IIS 5设计的早期应用程序向后兼容
– 多个应用程序池的支持,可以单独配置每一个池
– 重新改造了WWW服务(W3SVC),包括了一个新的配置和进程管理部分,名为Web管理服务(WAS)
– 其他增强的特性:处理器相似性、运行状况监视、Web园、请求式启动、空闲超时、快速故障保护、工作进程回收、XML配置数据库等
• 内核模式HTTP侦听程序(http.sys)
– 以前版本的IIS的结构是围绕核心inetinfo.exe进程建立的
–
• HTTP.SYS
– 内核模式HTTP侦听程序
– 设备驱动程序
– Windows Server 2003的TCP/IP网络子系统的一部分,从结构上说,它是TCP之上的一个网络驱动程序
– 侦听想要连接到IIS上运行的Web站点使用的IP地址和端口号的HTTP请求
– 不再属于IIS
– 主要用途是供IIS用来处理HTTP请求
– 还实现了其他几项功能:
• 在内核模式中缓存HTTP请求
• 管理TCP连接
• 实现连接限制和超时
• 管理带宽节流
• 处理WWW发布服务的基于文本的日志
• HTTP.SYS的好处
– 提高了IIS性能
– 提高了IIS的可靠性
– 提高了IIS的响应性
• IIS管理服务
– HTTP侦听和路由功能已经从IIS6的主要进程inetinfo.exe中删除
– 发生的变化是:现在处理IIS所执行的与Web无关的所有工作,换句话说IIS管理服务仍然处理FTP,SMTP,NNTP,但不处理HTTP
• Web管理服务(WAS)
– 管理站点
• IIS 6中,IIS管理服务不再与WWW服务直接相关,这一点的一个重要结果就是不再允许进程内Web应用程序
• Web管理服务(WAS)
– 负责IIS 6上的Web站点的创建和操作,包含两个组件:
– 配置管理器
• 负责与配置数据库进行交互,从而在需要时存储或检索Web站点的配置信息
– 应用程序池管理器
• 负责管理与IIS应用程序池相关联的工作进程,这些工作包括启动、停止、重新启动和回收工作进程,并监视它们的运行状况,维护它们的配置以及和它们与内核模式队列相关联的http.sys进行交互的方式
HKLM/System/CurrentControlSet/Services/W3SVC选择它下面的Parameters键并打开名为ServiceDll的值%systemroot%/System32/inetsrv/iisw3adm.dll
• IIS 6 应用程序模式
– 工作进程隔离模式
•IIS 6的主要工作模式
– IIS 5隔离模式
•保持与专门为IIS 5平台开发的应用程序的向后兼容性
IIS 结构-IIS 6之工作进程隔离模式
IIS 结构-IIS 6之IIS 5 隔离模式
IIS 结构-IIS 6
IIS 6 应用程序隔离模式的对应进程比较
IIS特性 | 工作进程隔离模式 | IIS 5隔离模式 |
HTTP | http.sys | http.sys |
FTP | inetinfo.exe | inetinfo.exe |
NNTP | inetinfo.exe | inetinfo.exe |
SMTP | inetinfo.exe | inetinfo.exe |
配置数据库 | inetinfo.exe | inetinfo.exe |
http.sys | 配置WAS | WAS |
工作进程 | w3sp.exe | 无 |
ISAPI筛选器 | w3sp.exe | inetinfo.exe |
进程内ISAPI扩展 | w3sp.exe | inetinfo.exe |
进程外ISAPI扩展 | 无 | dllhost.exe |
IIS 结构-IIS 6
• IIS 6的其他特性
– 处理器相似性
•Web园上非常有用。可以将Web园中的不同的工作进程(w3sp.exe)分配给不同的单独的CPU
• 大大提高性能、可用性和可靠性
• IIS 6的其他特性
– 请求式启动
• 在接收到第一个对应用程序池中某个应用程序的HTTP请求时启动工作进程,以便处理该应用程序池
– 空闲超时
• 如果处理一个应用程序池的工作进程已经空闲了一段指定的时间,那么WAS可以自动关闭这个进程,从而节省计算机上宝贵的内存
– 回收
• 错误的代码导致内存泄漏或冲突,在以前的版本中,必须定期重新启动Web服务器来保持应用程序的正常运行,在IIS6中可以通过回收与池相关联的工作进程而不是手工重新启动服务器来完成