一:IIS5.0運行在進程InetInfo.exe中,該進程寄宿著一個名為World Wide Publishing Service(W3VC)的window服務。
? W3VC的主要功能:包括HTTP請求的監聽、工作進程和配置管理
檢測到HTTP 請求時:
? ? ? 根據擴展名判斷是否靜態資源
? ? 1、是直接將文本內容以HTTP回復的形式返回
? ? 2.動態資源,通過IIS 的腳本映射----找到對應的ISAPI動態鏈接庫(是IIS和其他的動態的Web應用和平臺之間的紐帶)
? ? ASP.NET中對應的ISAPI文件的名稱為:aspnet_isapi.dll
? ? ISAPI支持ISAPI 的擴展(ISAPI Extension和ISAPI篩選)?
? ? ISAPI是真正處理HTTP請求的接口 ?ISAPI在HTTP請求真正處理之前查看、修改、轉發和拒絕請求(進行請求的驗證)
?
二:IIS6.0新增的功能:
1.ISAPI動態鏈接庫直接加載到工作進程中
?2.引入了應用程序池,由于每一個應用程序池對應一個獨立的工作進程,從而運行在不同的應用程序池中的Web應用提供基于進程的隔離級別
工作進程的別名(W3WP.exe)
3.創建了一個名為HTTP.SYS的HTTP監聽器。屬于TCP 之上的一個網絡驅動程序 ?不在IIS的元數據庫中,定義在注冊表中。
三:HTTP。SYS帶來的好處如下:
1.持續監聽:HTTP.SYSw是一個網絡驅動程序,始終處于運行狀態,對于用戶的HTTP請求能夠及時作出反應
2.更好的穩定性:運行在操作系統的內核模式下,并不執行任何用戶代碼,其本身不會受到Web應用、工作進程和IIS進程的影響。
3.內核模式下數據緩存:如果某個資源被頻繁請求,HTTP.SYS會把響應的內容進行緩存,響應的內容可以直接響應后續的請求(基于內核模式的緩存,不存在內核模式和用戶模式的切換,響應速度得到了相應的提高)
?
四:IIS6.0和ASP.NET
? 1.當HTTP.SYS監聽到HTTP請求分發給W3SVC----解析出URL地址
?2 根據從Metabase獲取的URL與Web應用之間的映射關系得到-----目標應用----目標應用運行的應用程序池或工作進程
?3. 如果進程不存在則創建新的工作程序進程(相應的ISAPI動態鏈接庫被加載 ? ?ISAPI.dll為aspnet_isapi.dll)
? 4.ASP.NET ISAPI在負責進行CLR加載、應用程序域的創建和Web應用的初始化操作
?
五:IIS7.0和ASP.NET
? ?1.引入了windows激活服務,將原來的W3SVC承載的部分功能分流給了WAS(對非HTTP協議的支持)
? ?2.IIS7.0中對W3SVC主要三大功能改進:
? ? ? ? ?HTTP請求的接受:接受HTTP.SYS監聽到的HTTP請求 ?(W3SVC)
? ? ? ? 配置管理:從元數據庫(Metabase)中加載配置信息,對相關組件進行配置 ? (WAS)
? ? ? ?進程管理:創建、回收、監控工作進程 ?(WAS)
工作原理:WAS通過監聽器適配接口抽象出不同協議的監聽器 (基于網絡驅動HTTP.SYS提供HTTP請求監聽功能外還提供了TCP監聽器、命名管道管理器和MSMQ監聽器,以及提供基于TCP、命名管道和MSMQ傳輸協議的監聽支持)
? ?此三種監聽器相對的是3種監聽適配器,他們提供監聽器與WAS中監聽器適配器接口之間的適配(W3SVC)更多的為HTTP.SYS提供監聽適配器的作用 ?定義在程序集SMHost.exe
? ?SMHost.exe提供了4個重要的Window Serveice
? ?1.NetTcpPortSharing:為WCF提供了TCP端口共享
? 2.NetPipeActivator:為WAS提供基于命名管道的激活請求,包括命名管道監聽器和對應的監聽適配器
? ?3.NetTcpActivator: ?為WAS提供基于TCP的激活請求,包括TCP監聽器和對應的監聽適配器
? ?4.NetMsmqActivator: ? 為WAS提供了基于Msmq的激活請求,包括MSMQ監聽器和對應的監聽適配器
?
? ? ? ? 從另一方面來講 ,IIS運行在非托管的環境中,而Asp.Net管道則是托管的,IsApi是連接非托管和托管環境的紐帶
?
IIS7.0實現了Asp.Net和IIS的集成,帶來的好處:
? ?1.允許通過本地代碼和托管代碼兩種方式定義IIS Module
? ?2.將ASP.NET的URL重寫功能置于身份驗證之前
? ?3.采用相同的方式去實現、配置、檢測和支持一些服務器特性 ? Module、Handler映射、定制錯誤配置
?