1. 程式人生 > >IIS6、IIS7和IIS8各版本的差別

IIS6、IIS7和IIS8各版本的差別

一、寫在前面

   目前市面上所用的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服務使用配置資訊去配置HTTP.sys處理策略;

      5.WWW服務使用配置資訊去配置HTTP.sys處理策略;

      6.WAS為這個請求對應的應用程式池(Application Pool)開啟W3WP Worker Process;

         W3WP Worker Process處理以後,將Response返回給HTTP.sys;

         客戶端接收到Response內容。

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

        

四、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上的多核擴充套件;