[asp.net] 'classic'和'integrated'管道模式在IIS7中有什么区别?



Answers

集成应用程序池模式

当应用程序池处于集成模式时,您可以利用IIS和ASP.NET的集成请求处理架构。 当应用程序池中的工作进程收到请求时,请求会通过事件的有序列表。 每个事件都会调用必要的本地和托管模块来处理部分请求并生成响应。

在集成模式下运行应用程序池有几个好处。 首先,将IIS和ASP.NET的请求处理模型集成到统一的流程模型中。 此模型消除了先前在IIS和ASP.NET中重复的步骤,如身份验证。 此外,集成模式还可以为所有内容类型提供托管功能。

经典应用程序池模式

当应用程序池处于经典模式时,IIS 7.0将按照IIS 6.0工作进程隔离模式处理请求。 ASP.NET请求首先经过IIS中的本机处理步骤,然后路由到Aspnet_isapi.dll以处理托管运行时中的托管代码。 最后,请求通过IIS路由回来发送响应。

IIS和ASP.NET请求处理模型的这种分离会导致某些处理步骤(如身份验证和授权)的重复。 此外,托管代码功能(例如表单身份验证)仅适用于您已将脚本映射到aspnet_isapi.dll处理的所有请求的ASP.NET应用程序或应用程序。

在将生产环境升级到IIS 7.0并将应用程序分配到集成模式下的应用程序池之前,请确保在集成模式下测试现有应用程序的兼容性。 如果应用程序无法在集成模式下工作,则应该只在Classic模式下将应用程序添加到应用程序池。 例如,您的应用程序可能依赖于从IIS传递到托管运行时的身份验证令牌,并且由于IIS 7.0中的新架构,该进程会中断您的应用程序。

取自: IIS7中DefaultAppPool和Classic .NET AppPool有什么区别?

原始来源: IIS体系结构简介

Question

我昨晚部署了一个ASP.NET MVC应用程序,发现部署IIS7设置为集成模式的工作量较小。 我的问题是什么区别? 使用其中一个或另一个的含义是什么?




在经典模式下,IIS直接处理h ISAPI扩展和ISAPI过滤器。 并使用两根管道,一根用于本地代码,另一根用于托管代码。 您可以简单地说,在经典模式下,IIS 7.x的工作方式与IIS 6的工作方式相同,您不会从IIS 7.x功能中获得额外的好处。

在集成模式下,IIS和ASP.Net紧密耦合,而不像经典模式那样依赖于Asp.net上的两个DLL。




Related