1.IIS5.0的進(jìn)程模型
如果把ASP.NET應(yīng)用程序部署到windows server 2003 之前的版本(例如windows 2000、windows xp),IIS5.0進(jìn)程模型是唯一的選擇。根據(jù)該進(jìn)程模型,aspnet_isapi.dll不能處理.aspx文件,而是充當(dāng)調(diào)度程序。它搜集所有有關(guān)激活URL和基礎(chǔ)資源的信息,然后把請(qǐng)求傳遞給另一個(gè)不同的進(jìn)程:名為aspnet_wp.exe的asp.net工作進(jìn)程。ISAPI擴(kuò)展和工作進(jìn)程之間的通信通過(guò)命名管道進(jìn)行。
IIS5.0進(jìn)程模型的整個(gè)原理圖
工作進(jìn)程的一個(gè)副本始終在運(yùn)行,并托管所有活動(dòng)的Web應(yīng)用程序。唯一例外的情況是一個(gè)帶多個(gè)CPU的Web服務(wù)器。在這種情況下,可以配置ASP.NET運(yùn)行庫(kù),一邊多個(gè)工作進(jìn)程運(yùn)行,使每個(gè)CPU分配到一個(gè)工作進(jìn)程。例如,如果有多個(gè)CPU,并且需要運(yùn)行線程安全的代碼,但又不足以假設(shè)它在一個(gè)多處理器環(huán)境下也能順利運(yùn)行,則需要這么做。多個(gè)進(jìn)程在一臺(tái)單服務(wù)器中的多個(gè)CPU上運(yùn)行的模型成為Web garden,并受machine.config文件中的<processModel>節(jié)上的屬性控制。
當(dāng)一個(gè)工作進(jìn)程被所有的CPU使用,并控制所有的Web應(yīng)用程序時(shí),并不一定表示沒(méi)有實(shí)現(xiàn)進(jìn)程隔離。事實(shí)上,每個(gè)Web應(yīng)用程序用自己虛擬目錄進(jìn)行標(biāo)識(shí),并且屬于一個(gè)不同的應(yīng)用程序域(AppDomain)。每當(dāng)客戶第一次處理一個(gè)虛擬目錄時(shí),在ASP.NET工作進(jìn)程內(nèi)創(chuàng)建一個(gè)新的AppDomain。創(chuàng)建新的AppDomain后,ASP.NET運(yùn)行庫(kù)加載所有必須的程序集,并把控制傳遞給托管的HTTP管道以實(shí)際服務(wù)于請(qǐng)求。
如果客戶從一個(gè)已經(jīng)運(yùn)行的Web應(yīng)用程序請(qǐng)求一個(gè)頁(yè),則ASP.NET運(yùn)行庫(kù)只是把該請(qǐng)求轉(zhuǎn)發(fā)到與該虛擬目錄關(guān)聯(lián)的先有的AppDomain。如果該AppDomain中沒(méi)有加載處理該頁(yè)所需的程序集,則動(dòng)態(tài)地創(chuàng)建它;否則,如果在第一次調(diào)用時(shí)已經(jīng)創(chuàng)建,則只是使用它。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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