IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
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下,当然也要承担上面所说的执行效率和安全问题。
IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别的更多相关文章
- 如何在Windows 2003+IIS6的环境下找回应用程序池(application pool)中的服务账号密码
上一篇文章说了说如何在Win2008+iis7中取出SharePoint管理账号密码的方法. 整个过程简单的讲,就是通过使用要找回密码的账号用来在SharePoint中创建一个临时的Web Appli ...
- Application Pool Identities
Whether you are running your site on your own server or in the cloud, security must be at the top of ...
- How do I create an IIS application and application pool using InnoSetup script
Create an IIS application. Create a new IIS application pool and set it's .NET version to 4. Set the ...
- 排错技能:任务管理器中追踪某w3wp.exe是哪个IIS站点的application pool
如果Windows的任务管理器中发现某个w3wp.exe占用了100%CPU,那我们就要揪出这是那个网站的application pool在作怪, 首先,每个站点一定要单独使用各自的applicati ...
- 批量启动application pool
在powershell中执行 Get-ChildItem IIS:\AppPools | where {$_.state -eq "Stopped"} | Start-WebApp ...
- SharePoint Error occurred in deployment step 'Recycle IIS Application Pool': 0x80070005:拒绝访问
错误出现的前提:多个用户在一台机器上做开发,使用非系统管理员账号时会出现,因为一般创建网站集时指定管理员为系统管理员: 使用 Visual Studio 2010 部署时报错:Error occurr ...
- 应用程序池和应用程序域的区别(Difference between application pool and application domain)
来自StackOverFlow: http://stackoverflow.com/questions/8486335/difference-between-an-application-domai ...
- Recycling Settings for an Application Pool <recycling>
Overview The <recycling> element contains configuration settings that control the conditions t ...
- IIS application pool access desktop denied
https://stackoverflow.com/questions/5437723/iis-apppoolidentity-and-file-system-write-access-permiss ...
随机推荐
- 手把手写php框架中三大“自动功能”
在很多php框架中都有自动过滤,自动填充,自动验证等三大自动功能,用来对POST表单传过来的数据进行加工,以便能够更加规范的导入数据库.这一功能在添加商品,添加商品分类中有很大的用处.比如thinkp ...
- 关于读取txt文件中文乱码问题
在处理文件的过程中,读取txt文件出现中文乱码.这种情况是由于编码字符不一致导致. public static string ReadFile(string path, string fileName ...
- java 多态2
http://www.cnblogs.com/wqq0402/p/6180685.html package test05; public class DuoTai_Test02 { /**多个对象,一 ...
- Linux(Ubuntu 14.0)
开始了Mono的学习.学习了Mono for Android之后,编译一些小的APK,总发现这些APK文件很大,额,真心不知道为什么,那么,就让我们从头开始学期了,Android是基于Linux的,那 ...
- TCP、UDP、HTTP、SOCKET之间的区别
IP:网络层协议: TCP和UDP:传输层协议: HTTP:应用层协议: SOCKET:TCP/IP网络的API. TCP/IP代表传输控制协议/网际协议,指的是一系列协议. TCP和UDP使用IP协 ...
- [16]APUE:套接字
[a] socket / socketpair #include <sys/socket.h> int socket(int domain, int type, int protocol) ...
- Ubuntu下deb包的安装方法 (zz)
Ubuntu下deb包的安装方法 分类: Ubuntu10使用技巧 2010-10-11 23:49 42969人阅读 评论(3) 收藏 举报 ubuntudebdebianlinux deb是deb ...
- Ado.net中简单的DBHelper类(增删改查)
private static string connString = "server=.;database=hotel;uid=aa;pwd=123";//最好从配置文件中取出 p ...
- json数据测试接口
json数据测试接口:http://www.xiaoqiang.org/tools/JsonView/?1348068433
- 前台js与后台方法互调
一:后台调用前台js的方法 ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", " ...