IIS
跟我一起学Visual Studio 2005(12):IIS 5.1_6.0 内幕
UNIX CGI使用一种进程外(out-of-process)执行模型.每次请求都要打开一个进程,
故MS的ISAPI选择了进程内模型(IIS4之前),
所有的操作都基于进程(inetinfo.exe)内执行,缺点在于:
更新程序必须重启IIS
一个程序出错,IIS崩溃
*asp出现于IIS3,asp.dll是ISAPI的扩展实现.
——–IIS4
增加了进程隔离(process isolation),注意这里的隔离以应用程序为单位,和UNIX CGI不同.
进程隔离的缺点
- 进程外应用程序的运行速度可能比进程内应用程序慢很多
- 所有的配置被加载到inteinfo.exe进程空间中.进程外应用程序不能
使用内置的IIS管理对象来访问IIS配置数据库属性.
- 进程外应用程序占用比进程内应用程序更多的内存资源
实现:通过MTS(跨进程处理)和(Web Application Manager,WAM)实现
inteinfo.exe外的新城已WAN_计算机名帐号执行
——-IIS5
提供了三个不同级别的应用程序保护
>低(IIS进程)与IIS的版本1~3最初的单一结构一样,作为WEB服务器进程(inetinfor.exe)的一部分在进程内运行
>中(共用的)作为一个单独的缓冲池进程在inetinfo.exe进程外运行,也就是说,它作为名为dllhost.exe的新
COM+宿主进程内部运行的几个应用程序之一
>高(独立的)在自己的隔离dllhost.exe进程中运行
——-IIS6
IIS 6与IIS 5之间的区别
1. HTTP请求由内核驱动程序HTTP.SYS处理,而不再是inetinfo.exe.
2. 支持两种新的应用程序隔离模型:
>工作进程隔离模型:全新的模型,它将用户开发的所有应用
程序代码与核心IIS服务完全隔离
>IIS 5隔离模型:为IIS 5设计的早期应用程序向后兼容
3.多个应用程序池的支持,可以单独配置每一个池
4.重新改造了WWW服务(W3SVC),包括了一个新的配置和进程管理部分,名为Web管理服务(WAS)
5.其他增强的特性:处理器相似性,运行状况监视,Web园,请求式启动,空闲超时,快速故障保护,工作进程回收,XML配置数据库等
——-IIS6观察:
在ComputerManagement的Services中查看
IIS Admin Service,对应程序为C:\WINDOWS\System32\inetsrv\inetinfo.exe
Web管理服务(W3SVC):World Wide Web Publishing Service,
对应程序为C:\WINDOWS\System32\svchost.exe -k iissvcs
HKLM\System\CurrentControlSet\Services\W3SVC
下的Parameters,有一个名为ServiceDll的value,其值为%systemroot%\System32\inetsrv\iisw3adm.dll
svchost.exe会根据这个记录来加载iisw3adm.dll
使用
netstat -a -b -n 来查看每个端口的侦听程序.
对于80端口,IIS5和IIS6有所不同.
IIS5 为inetinfo.exe
IIS6 为svchost.exe
