IIS6的架構模型主要由如下三個組件構成:HTTP.SYS,W3SVC以及W3Core。作為一個全新的架構,IIS6.0有如下讓人值得關注的新特點:
HTTP.SYS。全新的內核監聽模式
IIS6.0新的應用程序隔離模式-工作進程隔離模式
應用程序池
工作進程
Web管理服務(W3SVC)
IIS6的架構模型避免用戶應用程序訪問或者修改關鍵的操作系統數據,提供了兩種處理器訪問模式:
用戶模式(UserMode)和內核模式(KernelMode)。如下圖所示:

一般地,用戶程序運行在Usermode下,而操作系統代碼運行在KernelMode下。KernelMode的代碼允許訪問所有系統內存和所有CPU指令。
IIS5與IIS6架構模型對比
從Performance上看,IIS5把IIS和application運行在不同的進程中,雖然他們之間采用了基于NamedPipe的異步通信方式,但是一個基于進程之間的通信對性能的影響確實不能從根本上解決。
從Reliability來考慮,IIS5一臺機器上只能運行一個workerprocess,每個Application運行在同一個進程中,雖然基于ApplicationDomain的隔離能提供一定的Reliability,但是一旦整個個進程崩潰,所有的Application都受影響。所以我們有時候需要提供一個基于Process的隔離性。
基于Reliability的改進,IIS6引入了ApplicationPool。
ApplicationPool就是一個application的容器,在IIS6中,我們可以創建若干ApplicationPool,在創建WebApplication的時候,我們為它指定一個既定的applicationpool。
在運行的時候,一個ApplicationPool對應一個WorkerProcess:w3wp.exe。
對于IIS6來說,同一臺機器上可以同時運行多個WorkerProcess,每個WorkerProcess中的每個Applicationdomain對應一個Application。這樣,在IIS6架構模型中Application之間不但能提供ApplicationDomain級別的隔離,你也可以將不同的Application置于不同的ApplicationPool中,從而基于Process級別的隔離。
在IIS5.x中InetInfo.exe對Request的監聽和分發是在UserMode中進行,在IIS6中,這種工作被移植到kernelMode中進行,所有的這一切都是通過一個新的組件:http.sys來負責。