|
在2007年9月份,我曾經(jīng)寫(xiě)了三篇詳細(xì)介紹IIS架構(gòu)和ASP.NET運(yùn)行時(shí)管道的文章,深入介紹了IIS 5.x與IIS 6.0HTTP請(qǐng)求的監(jiān)聽(tīng)與分發(fā)機(jī)制,以及ASP.NET運(yùn)行時(shí)管道對(duì)HTTP請(qǐng)求的處理流程:
[原創(chuàng)]ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI
[原創(chuàng)]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part I
[原創(chuàng)]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II
很多人留言為何沒(méi)有IIS 7的介紹。在寫(xiě)作《WCF深入剖析》中,為了剖析基于IIS的WCF服務(wù)寄宿(Hosting),再次對(duì)相關(guān)內(nèi)容進(jìn)行了研究,在這里一并與大家分享。
我們先來(lái)看看IIS 5.x是如何處理基于ASP.NET資源(比如.ASPx,.asmx等)請(qǐng)求的,整個(gè)過(guò)程基本上可以通過(guò)圖1體現(xiàn)。
IIS 5.x運(yùn)行在進(jìn)程INETInfo.exe中,在該進(jìn)程中一個(gè)最重要的服務(wù)就是名為World Wide Web Publishing Service(簡(jiǎn)稱W3SVC)的Windows Service。W3SVC的主要功能包括HTTP請(qǐng)求的監(jiān)聽(tīng)、工作進(jìn)程的管理以及配置管理(通過(guò)從Metabase中加載相關(guān)配置信息)等。
當(dāng)檢測(cè)到某個(gè)HTTP Request后,先根據(jù)擴(kuò)展名判斷請(qǐng)求的是否是靜態(tài)資源(比如.html,.img,.txt,.xml等),如果是則直接將文件內(nèi)容以HTTP Response的形式返回。如果是動(dòng)態(tài)資源(比如.ASPx,ASP,php等等),則通過(guò)擴(kuò)展名從IIS的腳本影射(Script Map)找到相應(yīng)的ISAPI Dll。
NET技術(shù):[原創(chuàng)]再談IIS與ASP.NET管道,轉(zhuǎn)載需保留來(lái)源! 鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。