IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
2014-09-03 14:50
85 查看
IIS7也用了好久了,关于Application Pool Integrate Mode 和 Classic Mode 究竟是什么也是懵懵懂懂,于是下决心去官网看了技术文档,终于恍然大悟,特来分享一下。
IIS从7开始引入了Application Pool,解决了IIS6设置在Server上的问题(因为设置在Server上,因此你不能让两个application跑在两个mode下)。并且增加了模式设置,分别为 Integate Mode 和 Classic Mode。那么这两个模式有什么区别呢,下面我慢慢道来。
首先要先说下IIS的Module,IIS7开始引入了Module,每个Module有各自的功用,Module包含IIS自己携带的,称为Native Module,和外来引入了。而由.NET引入的Module称为Managed Module。如果你仔细查看Native Module和Managed Module,你会发现两者是有重复的,特别是用户认证这里,而如何调用这些Module,就是这两个模式的主要区别。
先说说Integrate Mode。在这个Mode下,当接收一个新的request的时候,request会传送一个有序的事件列表,然后IIS会根据各个事件去调用需要的Native Module 和 Managed Module。就拿用户认证来说吧,如果是一个ASP.NET应用程序,那么IIS会忽略Native Module,而去直接调用Managed Module。这样便提高了处理request的效率,并且保证该应用程序的所有用户认证都被.Net程序管理。
对于Classic Mode,其实和IIS6 中的isolation mode是一样的,一个request来了,IIS先调用Native Module处理,然后如果需要运行托管代码,则调用aspnet_isapi.dll去解析,这时才调用Managed Module。如果你用了Form的认证方式,那么要先经过Native Module的一次认证,然后在调用托管代码的时候再运行一次Managed Module认证,这就重复了两次。此外,如果一个资源不运行托管代码,那么托管代码的认证是不会运行了,以Form方式为例,如果调用一个静态资源,则只会调用IIS的原生认证,而不会使用Form认证。可见Classic Mode在效率和部署配置上不如Integrate Mode好。
总结一下,通过上面不难看出,如果写ASP.NET程序,运行在Integrate Mode是最好的选择。Classic Mode更像是一种向下兼容的模式,如果你的应用在Integrate Mode下有问题,可以切换到该模式下一用。此外,Classic Mode的另外一个应用场景就是原生模块的多样,还拿认证来说,原生的就比.NET的多出不少,如果为了降低开发成本,也可运行在Classic Mode下,当然也要承担上面所说的执行效率和安全问题。
IIS从7开始引入了Application Pool,解决了IIS6设置在Server上的问题(因为设置在Server上,因此你不能让两个application跑在两个mode下)。并且增加了模式设置,分别为 Integate Mode 和 Classic Mode。那么这两个模式有什么区别呢,下面我慢慢道来。
首先要先说下IIS的Module,IIS7开始引入了Module,每个Module有各自的功用,Module包含IIS自己携带的,称为Native Module,和外来引入了。而由.NET引入的Module称为Managed Module。如果你仔细查看Native Module和Managed Module,你会发现两者是有重复的,特别是用户认证这里,而如何调用这些Module,就是这两个模式的主要区别。
先说说Integrate Mode。在这个Mode下,当接收一个新的request的时候,request会传送一个有序的事件列表,然后IIS会根据各个事件去调用需要的Native Module 和 Managed Module。就拿用户认证来说吧,如果是一个ASP.NET应用程序,那么IIS会忽略Native Module,而去直接调用Managed Module。这样便提高了处理request的效率,并且保证该应用程序的所有用户认证都被.Net程序管理。
对于Classic Mode,其实和IIS6 中的isolation mode是一样的,一个request来了,IIS先调用Native Module处理,然后如果需要运行托管代码,则调用aspnet_isapi.dll去解析,这时才调用Managed Module。如果你用了Form的认证方式,那么要先经过Native Module的一次认证,然后在调用托管代码的时候再运行一次Managed Module认证,这就重复了两次。此外,如果一个资源不运行托管代码,那么托管代码的认证是不会运行了,以Form方式为例,如果调用一个静态资源,则只会调用IIS的原生认证,而不会使用Form认证。可见Classic Mode在效率和部署配置上不如Integrate Mode好。
总结一下,通过上面不难看出,如果写ASP.NET程序,运行在Integrate Mode是最好的选择。Classic Mode更像是一种向下兼容的模式,如果你的应用在Integrate Mode下有问题,可以切换到该模式下一用。此外,Classic Mode的另外一个应用场景就是原生模块的多样,还拿认证来说,原生的就比.NET的多出不少,如果为了降低开发成本,也可运行在Classic Mode下,当然也要承担上面所说的执行效率和安全问题。
相关文章推荐
- IIS7入门之旅:(3)CGI application和FastCGI application的区别
- 应用程序池和应用程序域的区别(Difference between application pool and application domain)
- 两种通信模式(Ad hoc mode和Infrastracuture mode)的区别是什么?
- SetPolyFillMode(hdc,iMode)中的iMode参数的区别
- VS2005中的WebSite项目和WebApplication项目有何区别
- session,viewstate,cookies,Application的区别
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
- WebSite项目和WebApplication项目有何区别
- Application、Session、Cookie、ViewState和Cache等对象保存信息的区别
- page,request,session,application的区别
- How to Integrate Google Searches into Your Application
- web服务器和应用服务器的区别(the difference between an application server and a Web server)
- Application.Run()和Form.Show()的区别
- APPlication,Session,Cookie和ViewState等对象保存信息的区别
- Web Application 和Web Site 的区别(转)
- ASP.NET的Application、Session、Cookie、ViewState和Cache等变量的区别是什么?
- session,application,cookies区别
- VS2005中的WebSite和WebApplication有何区别
- vs2005和vs2008默认建立web site和web application 生成的webform源码的一点区别