IIS各個版本中你需要知道的那些事兒

部落格園發表於2014-08-18

一、寫在前面

目前市面上所用的IIS版本估計都是>=6.0的.所以我們主要以下面三個版本進行講解

伺服器版本 IIS預設版本
server2003 6.0
server2008 7.0
server2012 8.0

二、IIS6的請求過程

由圖可知,所有的請求會被伺服器中的http.sys元件監聽到,它會根據IIS中的 Metabase 檢視基於該 Request 的 Application 屬於哪個Application Pool, 如果該Application Pool不存在,則建立之。否則直接將 Request 發到對應Application Pool 的 Queue中。

每個 Application Pool 對應著一個Worker Process:w3wp.exe。在IIS Metabase 中維護著 Application Pool 和w3wp的對映。WAS(Web Administrative service)根據這樣一個mapping,將存在於某個Application Pool Queue的request 傳遞到對應的worker process(如果沒有,就建立這樣一個程式)。在 worker process 初始化的時候,載入ASP.NET ISAPI。

同時,在w3wp.exe的內部,ASP.NET 是以 IIS ISAPI extension 的方式外加到 IIS(其實包括 ASP 以及 PHP,也都以相同的方式配置),ASP.NET ISAPI進而載入CLR。從而為ASP.NET Application建立一個託管的執行環境,在CLR初始化的使用會載入兩個重要的dll:AppManagerAppDomainFactory和ISAPIRuntime。通過AppManagerAppDomainFactory的Create方法為Application建立一個Application Domain;通過ISAPIRuntime的ProcessRequest處理Request,進而將流程拖入到ASP.NET Http Runtime Pipeline的範疇

注:ISAPI,意思:網際網路伺服器應用程式介面(Internet Server Application Program Interface).

三、 IIS7的工作過程

1.HTTP.sys監聽攔截客戶端請求開始處理。
2.HTTP.sys通過配置資訊聯絡WAS獲取相關資訊。
3.WAS 向配置儲存中心請求配置資訊。applicationHost.config。
4.WWW 服務接受到配置資訊,配置資訊指類似應用程式池配置資訊,站點配置資訊等等。
5.WWW 服務使用配置資訊去配置 HTTP.sys 處理策略。
6.WAS為這個請求對應的應用程式池(Application Pool)開啟W3WP Worker Process。
W3WP Worker Process處理以後,將Response返回給HTTP.sys。
客戶端接受到Response內容。

注意:我們稱3-6為初始化配置的過程,配置完畢之後,以後的請求就直接到第七步.當然IIS被重啟了,就重頭來過.

三、IIS7程式池託管管道模式

W3WP.exe 程式在IIS7中如何工作, 取決於IIS 7 的應用程式池託管管道模式是什麼,IIS7目前有2個模式: 經典模式和整合模式

經典的意思大家都知道,就是一個一直以來所使用的方式(便於大家記憶),IIS7其中經典模式的W3WP.exe工作方式就是IIS6的處理方式.

即: IIS ISAPI extension,也就是 aspnet_isapi.dll

IIS7整合模式是一個偉大的改進,讓IIS整合了.NET功能(不在依靠之前IIS版本的aspnet_ISPAI.DLL),也就是說所有的HTTP Request請求都要經過.NET來處理(包括html, php等),也因為 .NET 的諸多功能已經成為 IIS 7 的一部份.效能上也得到了提升.

四、IIS8和IIS7有哪些不一樣的地方

1. IIS 8.0 只能執行於>=Windows Server 2012 and Windows 8的平臺上;
2. IIS 8.0 Application 的初始化被包括在IIS 8.0中. IIS 7.5 Application 初始化(RC) 被作為一個外帶模組;
3. IIS 8.0 管理工具已經為 ASP.net 4.5功能更新 . IIS 7.5中還沒有;
4. IIS 8.0 整合了SSL 認證支援. IIS 7.5 還沒有;
5. IIS 8.0 CPU 節流已經得到更新且包括額外的節流選項,而 IIS 7.5還沒有變化;
6. IIS 8.0 整合了動態IP 地址限制功能
7. IIS 8.0 整合了FTP嘗試登陸限制功能.
8. IIS 8.0 在NUMA 上的多核擴充套件;

相關文章