在IIS 7中,添加一個應用程序或者單獨的網站,默認會自動新建一個對應的“應用程序池”,這也是IIS 7的一大特色。
在早期的IIS 5.0中,只有一個應用程序池的情況下,很容易造成“全軍覆沒,一榮俱損”。因為所有的網站(或者虛擬目錄下的應用程序)都“寄居”在一個“池”,當這個“池”崩潰了,所有的網站都杯具了。
後來的IIS 6中,有了“應用程序池”的概念,但是默認不會自動添加,IIS 管理員可以手動去添加,配置,這樣是的IIS 具有很強的隔離性。
應用程序池具有下列優點:
改進的服務器和應用程序性能。對於占用大量資源的應用程序,您可以將其分配給它們自己的應用程序池,以免影響其他應用程序的性能。
改進的應用程序可用性。如果一個應用程序池中的應用程序發生故障,將不會影響其他應用程序池中的應用程序。
改進的安全性。通過隔離應用程序,可以降低一個應用程序訪問其他應用程序資源的幾率。
在 IIS 7 中,應用程序池有兩種運行模式:集成模式和經典模式。應用程序池模式會影響服務器處理托管代碼請求的方式。如果托管應用程序在采用集成模式的應用程序池中運行,服務器將使用 IIS 和 ASP.NET 的集成請求處理管道來處理請求。但是,如果托管應用程序在采用經典模式的應用程序池中運行,服務器會繼續通過 Aspnet_isapi.dll 路由托管代碼請求,其處理請求的方式就像應用程序在 IIS 6.0 中運行一樣。
大多數托管應用程序應該都能在采用集成模式的應用程序池中成功運行,但為實現版本兼容,有時也需要以經典模式運行。應該先對集成模式下運行的應用程序進行測試,以確定是否真的需要采用經典模式。使用IIS 7 部署asp.net mvc 應用程序時,只需要選擇“集成”即可,不需要像在IIS 6中繁瑣的配置(設置ISAPI映射,添加通配符...)