IIS6、IIS7和IIS8各版本的差別

2014-08-27 11:24:31來(lái)源:博客園作者:

目前市面上所用的IIS版本估計(jì)都是>=6.0的.所以我們主要以下面三個(gè)版本進(jìn)行講解……

一、寫在前面

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

服務(wù)器版本 IIS默認(rèn)版本
server2003 6.0
server2008 7.0
server2012 8.0

二、IIS6的請(qǐng)求過(guò)程

\

由圖可知,所有的請(qǐng)求會(huì)被服務(wù)器中的http.sys組件監(jiān)聽到,它會(huì)根據(jù)IIS中的 Metabase 查看基于該 Request 的 Application 屬于哪個(gè)Application Pool, 如果該Application Pool不存在,則創(chuàng)建之。否則直接將 Request 發(fā)到對(duì)應(yīng)Application Pool 的 Queue中。

每個(gè) Application Pool 對(duì)應(yīng)著一個(gè)Worker Process:w3wp.exe。在IIS Metabase 中維護(hù)著 Application Pool 和w3wp的映射。WAS(Web Administrative service)根據(jù)這樣一個(gè)mapping,將存在于某個(gè)Application Pool Queue的request 傳遞到對(duì)應(yīng)的worker process(如果沒有,就創(chuàng)建這樣一個(gè)進(jìn)程)。在 worker process 初始化的時(shí)候,加載ASP.NET ISAPI。

同時(shí),在w3wp.exe的內(nèi)部,ASP.NET 是以 IIS ISAPI extension 的方式外加到 IIS(其實(shí)包括 ASP 以及 PHP,也都以相同的方式配置),ASP.NET ISAPI進(jìn)而加載CLR。從而為ASP.NET Application創(chuàng)建一個(gè)托管的運(yùn)行環(huán)境,在CLR初始化的使用會(huì)加載兩個(gè)重要的dll:AppManagerAppDomainFactory和ISAPIRuntime。通過(guò)AppManagerAppDomainFactory的Create方法為Application創(chuàng)建一個(gè)Application Domain;通過(guò)ISAPIRuntime的ProcessRequest處理Request,進(jìn)而將流程拖入到ASP.NET Http Runtime Pipeline的范疇

注:ISAPI,意思:互聯(lián)網(wǎng)服務(wù)器應(yīng)用程序接口(Internet Server Application Program Interface).

三、 IIS7的工作過(guò)程

1.HTTP.sys監(jiān)聽攔截客戶端請(qǐng)求開始處理。
2.HTTP.sys通過(guò)配置信息聯(lián)系WAS獲取相關(guān)信息。
3.WAS 向配置存儲(chǔ)中心請(qǐng)求配置信息。applicationHost.config。
4.WWW 服務(wù)接受到配置信息,配置信息指類似應(yīng)用程序池配置信息,站點(diǎn)配置信息等等。
5.WWW 服務(wù)使用配置信息去配置 HTTP.sys 處理策略。
6.WAS為這個(gè)請(qǐng)求對(duì)應(yīng)的應(yīng)用程序池(Application Pool)開啟W3WP Worker Process。
W3WP Worker Process處理以后,將Response返回給HTTP.sys。
客戶端接受到Response內(nèi)容。

注意:我們稱3-6為初始化配置的過(guò)程,配置完畢之后,以后的請(qǐng)求就直接到第七步.當(dāng)然IIS被重啟了,就重頭來(lái)過(guò).

\

三、IIS7程序池托管管道模式

W3WP.exe 進(jìn)程在IIS7中如何工作, 取決于IIS 7 的應(yīng)用程序池托管管道模式是什么,IIS7目前有2個(gè)模式: 經(jīng)典模式和集成模式

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

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

IIS7集成模式是一個(gè)偉大的改進(jìn),讓IIS集成了.NET功能(不在依靠之前IIS版本的aspnet_ISPAI.DLL),也就是說(shuō)所有的HTTP Request請(qǐng)求都要經(jīng)過(guò).NET來(lái)處理(包括html, php等),也因?yàn)?.NET 的諸多功能已經(jīng)成為 IIS 7 的一部份.性能上也得到了提升.

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

1. IIS 8.0 只能運(yùn)行于>=Windows Server 2012 and Windows 8的平臺(tái)上;
2. IIS 8.0 Application 的初始化被包括在IIS 8.0中. IIS 7.5 Application 初始化(RC) 被作為一個(gè)外帶模塊;
3. IIS 8.0 管理工具已經(jīng)為 ASP.net 4.5功能更新 . IIS 7.5中還沒有;
4. IIS 8.0 集成了SSL 認(rèn)證支持. IIS 7.5 還沒有;
5. IIS 8.0 CPU 節(jié)流已經(jīng)得到更新且包括額外的節(jié)流選項(xiàng),而 IIS 7.5還沒有變化;
6. IIS 8.0 集成了動(dòng)態(tài)IP 地址限制功能
7. IIS 8.0 集成了FTP嘗試登陸限制功能.
8. IIS 8.0 在NUMA 上的多核擴(kuò)展;

關(guān)鍵詞:IIS

贊助商鏈接: