IIS6處理模型

IIS5 中有兩個(gè)弊端,其一是ISAPI與工作進(jìn)程分離,會(huì)存在性能瓶頸;其二是所有ASP.NET應(yīng)用程序存在于同一個(gè)進(jìn)程中,應(yīng)用程序間會(huì)存在影響。
針對(duì)這兩個(gè)問(wèn)題,作了兩個(gè)改進(jìn),引入了應(yīng)用程序池以及把ISAPI放到工作進(jìn)程中。
此外IIS6中在系統(tǒng)內(nèi)核層面引入了HTTP.SYS處理監(jiān)聽(tīng)HTTP請(qǐng)求。其好處是可以持續(xù)監(jiān)聽(tīng),更好的穩(wěn)定性和內(nèi)核模式下數(shù)據(jù)緩存。Inetinfo.exe單純用于存儲(chǔ)ISAPI的配置信息,W3SVC則寄宿于另一個(gè)進(jìn)程SvcHost.exe中,其內(nèi)部職能并沒(méi)有發(fā)生任何變化,功能實(shí)現(xiàn)做了改進(jìn)。
IIS7處理模型

在IIS7中引入了 Windows 進(jìn)程激活服務(wù)( Windows Process Activation Service , WAS )的引入,將原來(lái)( IIS 6.0 ) W3SVC 承載的部分功能分流給了 WAS 。實(shí)際上是對(duì)監(jiān)聽(tīng)這一環(huán)節(jié)開(kāi)放了可擴(kuò)展的接口。W3SVC還是存儲(chǔ)原有的HTTP請(qǐng)求的監(jiān)聽(tīng),但這也成為了它唯一的職責(zé),后續(xù)的讀取ISAPI信息和工作進(jìn)程管理那塊則移交給WAS。擴(kuò)展的監(jiān)聽(tīng)接口看介紹是在WCF方面比較有用,現(xiàn)在暫且不關(guān)注它。ISAPI的配置信息也不依賴(lài)于原有的Metabase,改用了applicationHost.config。
IIS7的集成模式肯定也要提到,在前面介紹httpHandlers的時(shí)候也提到IIS7有經(jīng)典模式和集成模式。IIS7之前是使用雙管道處理Http請(qǐng)求,在IIS中有一堆模塊處理(例如身份認(rèn)證),同樣在Http管道中有重復(fù)的處理。而在IIS7中新增了集成模式可以使得這兩個(gè)管道處理變成單一管道統(tǒng)一處理。IIS7中同樣保留了雙管道的處理模式,稱(chēng)之為經(jīng)典模式。在經(jīng)典模式中對(duì)擴(kuò)展的HttpModule和HttpHandler只作用于ISAPI擴(kuò)展過(guò)的這些資源,但對(duì)靜態(tài)資源是沒(méi)有作用的,假設(shè)使用了集成模式,因?yàn)槭菃我还艿澜y(tǒng)一處理,不管動(dòng)態(tài)還是靜態(tài)都會(huì)被httpModule和HttpHandler處理。
上面介紹的幾個(gè)IIS處理模型都是在HttpRuntime生成前,到了.NET Runtime的范圍內(nèi),HttpRuntime才開(kāi)始被創(chuàng)建出來(lái)。關(guān)于如何被生成,如何被調(diào)用鄙人則不想再粘貼代碼了。想看的話(huà)還是那個(gè)鏈接:舍長(zhǎng)的《 深入理解 ASP.NET 的內(nèi)部運(yùn)行機(jī)制 》。
以上都是人云亦云的內(nèi)容,在經(jīng)峰哥教導(dǎo)后我覺(jué)得這樣學(xué)習(xí)就不踏實(shí)了,可惜好像還沒(méi)有任何有效途徑去驗(yàn)證這些說(shuō)法。至少在MSDN上也還沒(méi)發(fā)現(xiàn)相關(guān)內(nèi)容。