如果Web服務(wù)器操作系統(tǒng)是Windows server 2003,則IIS 6.0進(jìn)程模型是asp.net的默認(rèn)選擇。其名稱明確之處,該模型需要IIS 6.0、然后,在windows 2003 的服務(wù)器上,仍然可以讓asp.net遵守IIS 5.0進(jìn)程模型的規(guī)則。可以通過修改machine.config文件中的<processModel>節(jié),顯示的啟用該模型。
<processModel enable="true">
當(dāng)然,我并不建議且滑倒IIS 5.0進(jìn)程模型,雖然這樣做是合法的。主要原因在于:IIS 6.0利用不同的內(nèi)部模塊的管道來處理一個(gè)入站請(qǐng)求,并且只有在仿真模式下運(yùn)行時(shí)才能模仿IIS 5.0的行為。IIS 6.0管道以一個(gè)名為 完wp.exe的工作進(jìn)程為中心。所有被分配給同一個(gè)應(yīng)用程序池的Web應(yīng)用程序共享該可執(zhí)行進(jìn)程的一個(gè)副本。用IIS 6.0的行話來說,一個(gè)應(yīng)用程序池是一組共享相同的工作進(jìn)程的副本的Web用用程序。IIS 6.0使我們能夠指定應(yīng)用程序池,以實(shí)現(xiàn)Web服務(wù)器上托管的各應(yīng)用程序所需的隔離程度。
w3wp.exe worker進(jìn)程加載aspn_isapi.dll;該ISAPI擴(kuò)展又加載通用語言運(yùn)行庫(kù)(CLR),并啟動(dòng)ASP.NET運(yùn)行庫(kù)管道來處理該請(qǐng)求。當(dāng)IIS 6.0進(jìn)程模型正在使用時(shí),內(nèi)置的ASP.NET工作進(jìn)程會(huì)被禁用。
注意:只有asp.net1.1完全利用IIS 6.0進(jìn)程模型。如果把a(bǔ)sp.net1.0安裝到一臺(tái)windows 2003 機(jī)器上,則默認(rèn)的進(jìn)程模型是IIS 5.0進(jìn)程模型。之所以會(huì)這樣,是因?yàn)閍sp.net1.1所帶的aspnet_isapi.dll能夠識(shí)別它的宿主,并根據(jù)需要加載CLR。asp.net1.0所帶的aspnet_isapi.dll只能把請(qǐng)求轉(zhuǎn)發(fā)給asp.net工作進(jìn)程,絕對(duì)不會(huì)加載CLR。
下圖為IIS 6.0進(jìn)程模型
IIS 6.0作為內(nèi)核級(jí)模塊實(shí)現(xiàn)其HTTP監(jiān)聽程序。因此,所有的輸入請(qǐng)求首先由http.sys驅(qū)動(dòng)程序以內(nèi)核模式進(jìn)行管理。沒有任何的第三方代碼會(huì)與該監(jiān)聽程序交互,并且沒有任何的用戶模式?jīng)_突會(huì)影響IIS的穩(wěn)定性。http.sys驅(qū)動(dòng)程序監(jiān)聽請(qǐng)求,并把他們投遞到合適的應(yīng)用程序池的請(qǐng)求隊(duì)列。一個(gè)稱為餓哦Web管理服務(wù)的模塊讀取IIS 冤苦,并指示http.sys驅(qū)動(dòng)程序創(chuàng)建與元庫(kù)中所注冊(cè)應(yīng)用程序池一樣多的請(qǐng)求隊(duì)列。
總之,在IIS 6.0進(jìn)程模型下,asp.net運(yùn)行的更快,因?yàn)樵趇netinfo.exe可執(zhí)行進(jìn)程和工作進(jìn)程之間,不需要任何進(jìn)程間的通信。http請(qǐng)求直接在托管CLR的工作進(jìn)程中被交付。此外,asp.net工作進(jìn)程不是一個(gè)特俗進(jìn)程,它只是IIS工作進(jìn)程的一個(gè)副本。這一事實(shí)將進(jìn)程回收、頁(yè)面輸入緩存和運(yùn)行狀況檢查的負(fù)擔(dān)(轉(zhuǎn)交給IIS)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
