IIS 4之前
,所有的操作都是基于进程内执行(in-porcess execution)。使用ISAPI和C语言编写DLL,然后被加载到主要的IIS WEB服务器进程(inetinofo.exe)并在这个进程中运行。也就是把这个进程当成宿主,在这个宿主内部运行。这个时候只能用比较低级的语言,例如C语言进行编程,而且更新等都会有很多问题,如果要更新的话,必须要把服务器停止才能更新,这是一个非常麻烦的事情。
ISAPI是为IIS 1开发的,用来在WindowsNT中代替UNIX Web服务器的公共网关接口(CGI)。CGI使用一种进程外(out-of-process)执行模式。而IIS是进程内执行模式。每个CGI都是一个独立的进程,每一个的请求CGI都是以独立进程的方式来处理请求然后关闭请求,就算同一个进程请求的是同一个进程程序,他都是开多个CGI进程,每个用户每个请求他都谁打开一个新的CGI进程,这就大大浪费了性能,服务器的内存吃不消。而进程内的模式(IIS之前),inetinfo.exe就会控制缓存,如果同样的请求进来的话,就会使用之前缓存的进程,性能得到了提升。
然后IIS进程内执行的缺陷也很明显,工作不正常的ASP应用程序可能会关闭整个服务器(inetinfo.exe),虽然提高了WEB服务的性能,但是降低了可靠性。如果一个网站出现了异常,就要把整个服务器停掉,导致了服务器上其他的网站也要停掉。但是CGI程序则没有这样的可靠性的问题。
IIS 4
IIS 4是第一个在内部结构上发生重大变化的IIS版本。
Web应用程序的运行方式:
——进程隔离(Process Isolation)。
——保留ISAPI和ASP的性能优先,同时提供CGI的稳定性。
IIS配置信息的存储方式:左边是IIS4之前的运行方式;右边是IIS4新的进程隔离模式(每个黄色框代表一个进程)
进程隔离模式的优点:
——崩溃的进程外应用程序对在服务器上运行的其他应用程序没有影响。
——进程外应用程序可以在不依赖于服务器上的其他应用程序的情况下停止和重新启动,不会影响其他应用程序,简化了IIS上的应用程序的维护工作。
——可以将进程外应用程序配置为在出现故障之后自动重新启动。
进程隔离的缺点:
——进程外应用程序的运行速度可能比进程内应用程序慢很多。
——进程外应用程序不能使用内置的IIS管理对象来访问IIS配置数据库属性。
——进程外应用程序占用比进程内应用程序更多的内存资源。
IIS 5
IIS4的进程外应用程序不能与在同一台计算机上的其他任何应用程序通信。
由于IIS4的局限性,IIS5提供了三个不同级别的应用程序保护:
——低(IIS进程)与IIS的版本1~3自出的单一结构一样,作为WEB服务进程(inetinfo.exe)的一部分在进程内运行。
——中(共用的)作为一个单独的缓冲池应用程序在inetinfo.exe进程外运行,也就是说,他作为名为dllhost.exe的新COM+宿主进程内部运行的几个应用程序之一。
——高(独立的)在自己的隔离dllhost.exe进程中运行(也就是进程外模式)。
dllhost.exe进程不仅是运行一个应用程序,是运行多个应用程序共享的进程。所有在dllhost.exe进程内部的应用程序可以互相访问,这样就解决了进程之间不能互相通信的问题。
这也就继承了IIS4的进程外的优点,“独立进程”中某一个进程坏了的话,不会影响到其他应用程序;但是共享的“缓冲进程”中,如果有一个进程坏了,其他进程也需要一起重新启动,但是IIS的进程(inetinfo.exe)还回好的。
设置为低:进程内部运行程序或网站,如果应用程序坏了,整个WEB服务器都会坏掉。
设置为中:在独立的dllhost里运行程序或网站(可以运行多个应用程序或网站),但是一个坏了,其他也都会坏掉。默认为中。
设置为高:独立的dllhost里运行,只运行一个应用程序或网站;如果应用程序坏了,只是dllhost坏掉。
IIS 6
IIS6和IIS5之间的区别:
——HTTP请求的处理已经从inetinfo.exe进程直接移动到了Windows内核中,以便获得更高的性能,IIS6使用在Windows Server 2003。
——支持两种新的应用程序隔离模型:
1)“工作进程隔离模型”:全新的模型,它将用户开发的所有应用程序代码与核心IIS服务完全隔离。
2)IIS 5“隔离模型”:模仿IIS5的共享进程模型,为IIS 5设计的早期应用程序向后兼容。
——多个应用程序池的支持,可以单独配置每一个池;IIS5中只有一个,统一来管理。
——重新改造了WWW服务,包括了一个系的配置和进程管理部分,名为Web管理服务(WAS)。
——其他增强的特性:处理器相似性、运行状况见识、Web园、请求式启动、空闲超时、快速故障保护、工作进程回收、XML配置数据库等。
内核模式HTTP侦听程序(http.sys),这是Windows内核里的一个驱动程序。
以前版本的IIS的结构是围绕核心inetinfo.exe进程建立的:
Windwos上有内核模式和用户模式:内核模式是WIndows内部的代码,用户没有办法改变。内核模式的优先度最高,在所有内核模式处理完后,才会交给用户模式进行处理。
IIS 6之前是用户模式;II6之后是内核模式。内核模式更稳定,速度更快。内核模式有自己的排队处理,所有的请求都不会请求失败,内核模式都会进行处理。
HTTP.SYS
——内核模式HTTP监听程序。
——以设备驱动程序方式集成到系统底层。
——WIndow Server 2003的TCP/IP网络子系统的一部分,从结构上说,它是TCP之上的一个网络驱动程序。
——侦听想要连接到IIS上运行的Web站点使用的IP地址和端口号的HTTP请求。
——不在属于IIS。所有请求都是内核来完成。
——主要用途是提供IIS用来出来HTTP请求。
——还实现了其他几项功能:
1)在内核模式中缓存HTTP请求。
2)管理TCP连接。
3)实现连接限制和超时。
4)管理带宽节流。
5)处理WWW发布服务的基于文本的日志。
HTTP.SYS的好处:
——提高了IIS性能
——提高了IIS的可靠性
——提高了IIS的响应性
IIS6——工作进程隔离模式:使用Web管理服务
IIS 6 —— IIS5隔离模式:不使用WEb管理服务
IIS6 应用程序隔离模式的对应进程比较: