IIS 7 托管管道模式 經典模式(Classic) 集成模式(Integrated) 分析與理解
IIS 7.0 支持兩種管道模式:一種是IIS 7.0最新提供的集成管道模式,另一種是經典管道模式,經典管道模式是由先前版本的IIS提供的。
我們可以通過應用程序池設置管道模式,這項功能對IIS管理員尤其有用,因為這樣既可以令一臺服務器僅運行一種模式,也可以令兩種模式同時運行于一臺服務器上。
上述兩種管道模式使用的web.config文件存在重大的區別,許多在經典管道模式下能夠正常工作的web.config文件都無法在集成管道模式下正常工作。利用AppCmd.exe,我們可以將經典管道模式下的配置文件格式自動轉換為集成管道模式下的配置文件格式。
我們有必要首先看看各種模式的結構,并且研究兩種模式之間的區別。
1. 經典模式
在IIS 6.0中的經典模式中,ASP.NET是一個添加到IIS中的ISAPI。IIS 7.0之所以支持這種模式,是為了做到向后兼容。但是,經典模式缺少許多集成模式才能提供的特性。在經典模式中,IIS擁有自身的管道,這些管道可以通過創建一個ISAPI擴展進行擴充,而ISAPI擴展是以難以開發而著稱的。ASP.NET作為一個ISAPI擴展運行,只是IIS管道中的一項組成部分。
下圖很好地解釋了上述情況。注意,在這種情況下,ASP.NET似乎是一種類似于馬后炮的成果,僅當IIS處理ISAPI擴展時才能夠發揮作用。
利用文件擴展名,可以判斷使用哪個ISAPI處理程序。例如,可以將擴展名為.aspx 和.ascx的文件映射到aspnet_isapi.dll;并且將擴展名為.asp的文件映射到asp.dll,這樣就可以處理傳統的ASP頁面;此外,將擴展名為.php的文件映射到php.dll,這樣就可以處理PHP頁面,前提是已經安裝了php.dll。
此外,在IIS 6.0和IIS 7.0的經典模式中,某些特性是重復的。例如,錯誤處理就是一種重復的特性,因為IIS可以處理非ASP.NET頁面,而ASP.NET可以處理所有將處理程序映射為aspnet_isapi.dll的頁面。
在IIS 6.0中,我們可以將所有文件類型都映射到ASP.NET,但是這樣做存在一些限制。最大的限制就是如何處理默認文檔:一個默認文檔僅當在global.asax中或者在一個HTTP模塊中被指定為默認文檔時,這個默認文檔才能夠得到處理。某些自定義的配置需要使用aspnet_isapi.dll處理所有的文件類型。IIS 7.0可以輕易地解決這個問題。
經典模式可以在無須修改web.config的前提下運行現有的Web網站,因此,如果使用的Web farm中既包括IIS 6.0服務器,也包括IIS 7.0服務器,或者因為某些原因無法將web.config文件轉換為遵循新語法的web.config文件,那么就可以使用經典模式。
2. 集成模式
利用集成模式,可以將ASP.NET作為IIS的有機組成部分?,F在,IIS服務器的功能被劃分為40多個模塊,因此也就將IIS和ASP.NET的功能劃分為不同的組成部分。諸如StaticFileModule、BasicAuthenticationModule、FormsAuthentication、Session、Profile,以及RoleManager等模塊都是IIS管道的組成部分。注意,FormsAuthentication、Session、Profile,以及RoleManager原本就是ASP.NET的組成部分,與IIS并無關系。
新聞熱點
疑難解答
圖片精選