'经典'和& # 39;综合# 39;IIS7中的管道模式?

我在部署ASP。昨晚,我发现将IIS7设置为集成模式时部署工作更少。我的问题是有什么不同?使用其中一种会有什么影响呢?

308555 次浏览

经典模式(IIS6及以下版本中唯一的模式)是一种IIS仅直接使用ISAPI扩展和ISAPI过滤器的模式。事实上,在这种模式下,ASP。NET只是一个ISAPI扩展(aspnet_isapi.dll)和一个ISAPI过滤器(aspnet_filter.dll)。IIS只处理ASP。NET作为在ISAPI中实现的外部插件,并像黑盒一样使用它(仅当它需要向ASP.NET发出请求时)。在这种模式下,ASP。对于IIS, NET与PHP或其他技术没有太大区别。

另一方面,集成模式是IIS7中的一种新模式,其中IIS管道与ASP紧密集成(即完全相同)。NET请求管道。ASP。NET可以看到它想要的每个请求,并在此过程中进行操作。ASP。NET不再被视为外部插件。它完全混合和集成在IIS中。在这种模式下,ASP。NET __abc0基本上与ISAPI过滤器和ASP. NET __abc0一样强大。NET __abc1可以具有与ISAPI扩展几乎相同的功能。在这种模式下,ASP。NET基本上是IIS的一部分。

集成应用池模式

当应用池处于集成模式时,可以使用该模式 IIS和ASP.NET的集成请求处理体系结构。 当应用程序池中的工作进程接收到请求时, 请求传递一个有序的事件列表。每个事件调用 的部分处理所需的本机和托管模块

在Integrated中运行应用程序池有几个好处 模式。首先介绍了IIS和ASP的请求处理模型。网是 集成到统一的流程模型中。这个模型消除了步骤 以前在IIS和ASP中复制的。NET,例如 身份验证。此外,集成模式支持可用性

经典应用程序池模式

当应用程序池处于经典模式时,IIS 7.0处理请求 与IIS 6.0工作进程隔离模式相同。ASP。NET请求先发送 通过IIS中的本地处理步骤,然后路由到 Aspnet_isapi.dll用于处理托管代码 运行时。最后,通过IIS将请求路由回 响应。< / p > IIS和ASP的分离。NET请求处理模型 导致某些处理步骤的重复,例如 认证和授权。此外,托管代码特性, 例如表单身份验证,只能用于ASP。网 应用程序或已为其映射了全部脚本的应用程序

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

.

.

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

原始来源:IIS架构简介

在经典模式下,IIS直接使用ISAPI扩展和ISAPI过滤器。并使用两条管道,一条用于本机代码,另一条用于托管代码。您可以简单地在经典模式iis7中这样说。x就像iis6一样工作,并且您不会从iis7中获得额外的好处。x特性。

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

IIS 6.0及以前版本:

ASP。NET通过ISAPI扩展和C API(基于C编程语言的API)与IIS集成,并公开了自己的应用程序和请求处理模型。

这有效地暴露了两个独立的服务器(请求/响应)管道,一个用于本地ISAPI过滤器和扩展组件,另一个用于托管应用程序组件。ASP。NET组件将完全在ASP. NET中执行。NET ISAPI扩展泡,只用于映射到ASP. NET的请求。NET中的IIS脚本映射配置。

请求非ASP。NET内容类型:图像、文本文件、HTML页面和无脚本的ASP页面由IIS或其他ISAPI扩展处理,对ASP.NET不可见。

这个模型的主要限制是ASP提供的服务。NET模块和自定义ASP。NET应用程序代码不能用于非ASP。网络请求

什么是脚本映射?

脚本映射用于将文件扩展名与请求该文件类型时执行的ISAPI处理程序关联起来。脚本映射还有一个可选设置,用于在允许处理请求之前验证与请求关联的物理文件是否存在

一个很好的例子可以是< >强seen here < / >强

iis7及以上

IIS 7.0及以上版本已经从头开始重新设计,以提供一个全新的基于ISAPI的c++ API。

iis7.0及以上版本集成了ASP。NET运行时与Web服务器的核心功能,提供了一个统一的(单一的)请求处理管道,该管道公开给称为模块(IHttpModules)的本地和托管组件。

这意味着iis7处理任何内容类型的请求,__ABC0和ASP.NET modules在所有阶段都提供请求处理 这就是为什么非ASP。NET内容类型(.html,静态文件)可以由.NET模块处理。