在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映射,添加通配符...)
以下是MDSN上的关于应用程序池"集成"与"经典"模式的解释:(http://technet.microsoft.com/zh-cn/library/cc753449(WS.10).aspx)
经典模式:
指的是与IIS 6或者之前版本保持兼容的一种模式,一个典型问题就是,在处理ASP.NET这种动态网站的时候,它是通过一个所谓的ISAPI程序,作为插件的方式来工作的。针对不同的动态
应用程序(例如ASP,PHP等),会需要不同的ISAPI。
集成模式:
这种全新的模式,允许我们将ASP.NET更好地与IIS集成,甚至允许我们在ASP.NET中编写一些功能(例如Module)来改变IIS的行为(扩展)。集成的好处是,不再通过ISAPI的方式,提高
了速度和稳定性。至于扩展,则可以使得我们对于IIS以及其他类型的请求有更多的控制。
原文出处:
http://blog.youkuaiyun.com/dinglang_2009/article/details/6955161