本文讨论:
IIS 扩展点
构建响应修改模块
添加 IIS 管理器配置
部署模块
本文使用了以下技术:
IIS 7.0, .NET Framework
IIS 7.0 Web 平台与以往任何版本的 IIS 相比,可支持更多的应用程序框架技术来托管丰富的应用程序,它具有完备的功能,可以直接对这些应用程序进行部署。但是同时要注意,您所看到的(在 Windows 安装中)不一定是您最终得到的。
IIS 7.0 体系结构被设计为可以从上到下进行扩展,允许您将内置功能集的任何一部分替换为适合您需求的自定义实现。因此说 IIS 7.0 不是提供一些东拼西凑的插件点,而是通过在公共可扩展模型上层实现其自身的所有功能实现了最终的可扩展性承诺。这种设计在整个平台中随处可见,从模块 Web 服务器引擎自身到配置系统,再到 IIS 管理器控制台。
本文将对 IIS 7.0 可扩展模型进行研究,我们会对共享的源“响应修改”项目做一简要介绍,它可以使用可配置的响应修改规则对来自 IIS 应用程序的响应进行动态修改。首先我们将利用服务器的集成 ASP.NET 可扩展性来构建 Web 服务器模块。然后,我们将开发自定义的配置段并为 IIS 管理器创建自定义的管理页,以调整模块的部署和管理功能。
扩展 Web 服务器
IIS 7.0 模块体系结构具有全面自定义所需工作负荷的 Web 服务器的功能。这通常只需通过仅安装应用程序所需功能并建立精简 Web 服务器(除指定工作外不执行任何其他任务)即可完成。
但是,这仅仅是个开头。通常,所需的 Web 工作负荷需要使用附加的功能,而这些附加功能可能不是内置的 IIS 功能集的一部分。或者在某些情况下,应用程序可能因内置功能不够灵活而需要自定义的功能集。由于 IIS 7.0 的所有功能都是基于公共可扩展 API 构建的,因此您可以将其中的任何部分替换为最适合您需求的自定义实现。
IIS 7.0 为开发 Web 服务器模块提供了两个选项。首先,可以使用新的 C++ 模块 API,大部分内置功能都以此为基础。模块 API 将替换 ISAPI 扩展并筛选出在先前版本的 IIS 中提供的 API。此 API 与 ISAPI 相比有了重大的改进,因为它内容非常丰富,可支持所有 IIS 7.0 功能并且非常易于编程。您可以通过以下网址了解有关此 API 改进的详细信息:mvolo.com/blogs/serverside/archive/2006/10/07/10-reasons-why-server-development-is-better-with-IIS7.aspx。
其次,IIS 7.0 中集成了 ASP.NET,用户可以使用他们所熟悉的 ASP.NET 模块 API 来开发 IIS 7.0 模块。在 ASP.NET 集成模式下,这些模块在 IIS 请求处理管道中被视为一类成员,如图 1 所示。这将允许 ASP.NET 模块在处理请求的所有阶段访问 IIS 固有对象(如请求和响应),还允许它处理所有资源类型的请求 — 而不仅仅是由 ASP.NET 框架处理的类型。
图 1 位于 IIS 7.0 请求处理中的 ASP.NET 模块