IIS 7.0 確定託管管道模式

        IIS7.0可以支持兩種管道模式:一種是 IIS 7.0最新提供的集成管道模式,另一種是經典管道模式,這種模式是由先前版本的 IIS 提供的。我們可以在應用程序池級設置管道模式,這項功能對 IIS 管理員尤其有用,因爲這樣既可以令一臺服務器僅運行一種模式,也可以令兩種模式同時運行於一臺服務器上

        上述兩種管道模式使用的 web.config 文件存在重大的區別,許多在經典管道模式下能夠正常工作的 web.config 文件都無法在集成管道模式下正常工作。利用 AppCmd.exe,我們可以將經典管道模式下的配置文件格式自動轉換爲集成管道模式下的配置文件格式

經典模式

        在 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

        此外,在IIS6.0和IIS7.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文件,那麼就可以使用經典模式

集成模式

        利用集成模式,可以將ASP.NET 作爲IIS的有機組成部分。現在,IIS 服務器的功能被劃分爲40多個模塊,因此也就將IIS和ASP.NET的功能劃分爲不同的組成部分。諸如StaticFileModule、BasicAuthenticationModule、FormsAuthentication、Session、Profile,以及RoleManager等模塊都是IIS管道的組成部分.注意,FormsAuthentication、Session、Profile,以及RoleManager原本就是ASP.NET的組成部分,與IIS並無關係。下圖使用模塊解釋了IIS 管道。這些模塊原本是ASP.NET 的組成部分,現在已經是IIS管道的有機組成部分
在這裏插入圖片描述

        IIS管道提供了二十多種事件,開發人員可以利用這些事件來擴展Web服務器的功能。實際上,通過創建定製模塊,同時更新 applicationHost.config,可以僅使用自定義模塊,而無須再使用微軟公司提供的內置模塊,我們可以將IIS7.0中的模塊替換爲自定義的模塊

兩種模式之間配置的區別

        IIS 7.0對配置文件進行了一些修改,Web開發人員可以使用這些修改內容。例如,<system.webServer>節點就是這樣一項修改,無論是經典模式還是集成模式都可以識別<system.webServer>節點,同時,<system.webServer>節點既可以在applicationHost.config文件中設置,也可以在web.config文件中設置。<system.webScrver>節點既可以控制靜態頁面,也可以控制動態頁面。即使在經典模式中,<system.webServer>節也具有重要作用,它可以幫助Web開發人員在web.config 文件中設置不同的IIS配置

        在集成模式中,HTTP 模塊和 HTTP 處理程序不再定義於<system,web>中,而是定義於<system.webServer>中。如果在集成模式中運行一個包括了HTTP模塊或HTTP處理程序的 web.config 文件,那麼將會發生失效。幸運的是,微軟公司已經詳細規定了一個編號爲500.22的錯誤信息,這個錯誤信息說明了如何一步步地遷移web.config文件這裏就不再展示啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章