您好,登錄后才能下訂單哦!
IIS6的ASP.NET ISAPI請(qǐng)求處理過(guò)程是怎樣的,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
IIS6 的 ASP.NET 請(qǐng)求處理過(guò)程
對(duì)圖的解釋:
IIS6 的 ASP.NET 請(qǐng)求處理過(guò)程IIS 5.x 是通過(guò) InetInfo.exe 監(jiān)聽(tīng) Request 并把Request分發(fā)到Work Process。換句話說(shuō),在IIS 5.x中對(duì)Request的監(jiān)聽(tīng)和分發(fā)是在User Mode中進(jìn)行,在IIS 6中,這種工作被移植到kernel Mode中進(jìn)行,所有的這一切都是通過(guò)一個(gè)新的組件:http.sys 來(lái)負(fù)責(zé)。
注:為了避免用戶應(yīng)用程序訪問(wèn)或者修改關(guān)鍵的操作系統(tǒng)數(shù)據(jù),windows提供了兩種處理器訪問(wèn)模式:用戶模式(User Mode)和內(nèi)核模式(Kernel Mode)。一般地,用戶程序運(yùn)行在User mode下,而操作系統(tǒng)代碼運(yùn)行在Kernel Mode下。Kernel Mode的代碼允許訪問(wèn)所有系統(tǒng)內(nèi)存和所有CPU指令。
在User Mode下,http.sys接收到一個(gè)基于 aspx 的http request,然后它會(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,毫無(wú)疑問(wèn)他是運(yùn)行在User Mode下的。在IIS Metabase 中維護(hù)著 Application Pool 和worker process的Mapping。WAS(Web Administrative service)根據(jù)這樣一個(gè)mapping,將存在于某個(gè)Application Pool Queue的request 傳遞到對(duì)應(yīng)的worker process(如果沒(méi)有,就創(chuàng)建這樣一個(gè)進(jìn)程)。在 worker process 初始化的時(shí)候,加載ASP.NET ISAPI,ASP.NET ISAPI 進(jìn)而加載CLR。***的流程就和IIS 5.x一樣了:通過(guò)AppManagerAppDomainFactory 的 Create方法為 Application 創(chuàng)建一個(gè)Application Domain;通過(guò) ISAPIRuntime 的 ProcessRequest處理Request,進(jìn)而將流程進(jìn)入到ASP.NET Http Runtime Pipeline。
關(guān)于IIS6的ASP.NET ISAPI請(qǐng)求處理過(guò)程是怎樣的問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。