Windows Server 2008 操作系统为 Web 发布提供了一个统一的平台,该平台集成了 Internet 信息服务 (IIS)、ASP.NET 和 Windows Communication Foundation。IIS 版本 7.0 是对现有 IIS Web 服务器的重大改进,并且在集成 Web 平台技术中发挥着重要作用。
IIS 7.0 有什么作用?
IIS 7.0 版本的主要支柱为:
灵活的扩展性模型,可进行功能强大的自定义
强大的诊断功能和疑难解答工具
委派的管理
通过自定义提高了安全性并且减少了受攻击面
真正的应用程序 xcopy 部署
Windows Communication Foundation (WCF) 服务的集成应用程序和运行状况管理
改进的管理工具
这些支柱帮助创建统一的平台,以便 IIS 7.0 为 Web 解决方案提供一个一致的开发人员和管理员模型。
灵活的扩展性模型,可进行功能强大的自定义
IIS 7.0 使开发人员能够扩展 IIS 以采用新的更有效的方式提供自定义功能。IIS 7.0 扩展性包括一个全新的核心服务器应用程序编程接口 (API) 集,它允许采用本机代码 (C/C++) 和托管代码(诸如 C# 和 Visual Basic 2005 之类的语言以及使用 .NET Framework 的语言)开发功能模块。
IIS 7.0 还能够扩展配置、脚本、事件日志记录和管理工具功能集,从而为软件开发人员提供了一个构建 Web 服务器扩展的完整服务器平台。
强大的诊断功能和疑难解答工具
IIS 7.0 使开发人员和 IT 专业人员能够更轻松地对错误网站和应用程序进行疑难解答。IIS 7.0 提供有关 IIS 的内部诊断信息的清晰视图,并且收集和显示详细的诊断事件以帮助对有问题的服务器进行疑难解答。
委派的管理
IIS 7.0 使托管或管理网站或 WCF 服务的人能够将管理控制权限委派给开发人员或内容所有者,因此减少了管理员的拥有成本和管理负担。提供了新的管理工具来支持这些委派功能。
通过自定义提高了安全性并且减少了受攻击面
您可以控制在 Web 服务器上安装和运行哪些功能。IIS 7.0 由 40 多个独立的功能模块组成。每个功能模块都可以单独安装在服务器上以减少服务器的受攻击面,并且减少不需要它的位置的管理开销。有关各种功能模块的详细信息,请参阅 IIS 7.0 模块 (http://go.microsoft.com/fwlink/?LinkId=68740)(可能为英文网页)。
真正的应用程序 xcopy 部署
IIS 7.0 允许您将 IIS 配置设置存储在 web.config 文件中,这样更容易跨多个前端 Web 服务器使用 xcopy 复制应用程序,从而避免了高成本且易于出错的复制和手动同步的问题。
WCF 服务的应用程序和运行状况管理
若要通过许多协议改善 WCF 服务的开发和托管,Windows Server 2008 包含 Windows 激活服务 (WAS),该服务支持任意协议侦听器的可插入激活。WAS 为所有类型的消息激活的应用程序提供了智能资源管理、请求进程激活、运行状况监视以及自动故障检测和回收。WAS 基于 IIS 6.0 请求处理模型。
改进的管理工具
IIS 7.0 引入了一个新的面向任务的用户界面 (UI) 和一个新的命令行工具,用于管理 Web 服务器、网站和 Web 应用程序。有关详细信息,请参阅本主题的哪些现有功能将发生更改?中的“管理工具”部分。
谁会对该功能感兴趣?
托管或开发网站或 WCF 服务的任何企业或组织都会从对 IIS 7.0 的改进中受益。
如果您位于下列任何组中,则应该查看本主题以及有关 IIS 7.0 的其他支持文档:
从技术方面评估该产品的 IT 计划者和分析者
各组织的企业 IT 计划者和设计者
部署或管理 IIS 的 IT 专业人员
创建网站或 WCF 服务的开发人员
Internet 服务提供商 (ISP) 或提供 Web 托管的类似组织
是否有其他特殊注意事项?
默认情况下,启用 Windows 防火墙
在 Windows Server 2008 中,默认情况下启用 Windows 防火墙。在安装 Web 服务器 (IIS) 角色期间,安装过程添加了以下入站 Windows 防火墙规则以允许所选择的角色服务的通信:
如果安装与 HTTP 有关和与 HTTPS 有关的角色服务,则会向 Windows 防火墙中添加一个规则以允许端口 80 上的 HTTP 通信以及端口 443 上的 HTTPS 通信。这些规则作为“万维网服务 HTTP 接入”和“万维网服务 HTTPS 接入”出现在 Windows 防火墙列表中。它们会自动启用。
如果安装与 FTP 有关的角色服务,则会向 Windows 防火墙中添加一个规则以允许端口 21 上的 FTP 通信。该规则作为“FTP 服务器接入”出现在 Windows 防火墙列表中。它会自动启用。
如果安装管理服务,则会向 Windows 防火墙中添加一个规则,以允许端口 8172 上服务的通信。该规则作为“Web 管理服务接入”出现在 Windows 防火墙列表中。它必须由服务器管理员启用。
哪些现有功能将发生更改?
配置
IIS 7.0 引入了一些对存储和访问配置数据的方式的主要改进。IIS 7.0 版本的主要目标之一就是启用 IIS 设置的分布式配置,这允许管理员在与代码和内容一起存储的文件中指定 IIS 配置设置。
为什么此更改非常重要?
分布式配置使管理员能够在与代码或内容的相同目录中指定网站或应用程序的配置设置。通过在单个文件中指定配置设置,分布式配置允许管理员委派网站或 Web 应用程序的所选功能的管理,以便其他人(例如,应用程序开发人员)可以修改这些功能。管理员还可以锁定特定的配置设置,以便其他任何人都无法更改这些设置。
随着应用程序从开发阶段进入测试阶段以及最终进入生产阶段,可以使用分布式配置将特定站点或应用程序的配置设置从一台计算机复制到另一台计算机。分布式配置还能够跨服务器场(其中所有服务器都从一个文件服务器检索配置设置和内容)共享一个站点或应用程序的配置。
工作方式有何不同?
IIS 7.0 配置基于现有的 .NET Framework 配置存储,该存储能够将 IIS 配置设置以及 ASP.NET 配置存储在 Web.config 文件中。此更改为可以通过一组常用的 API 进行访问并且采用一致格式进行存储的所有 Web 平台配置设置提供了一个配置存储。IIS 7.0 配置系统也是完全可扩展的系统,因此开发人员可以扩展配置存储以包含自定义配置,自定义配置的保真度和优先级与 IIS 配置相同。
IIS 7.0 将全局或计算机范围的配置存储在名为 ApplicationHost.config 文件的 %windir%\system32\inetsrv 目录中。在该文件中,有两个主要的配置部分组:
system.applicationHost
system.webServer
system.applicationHost 部分组包含站点、应用程序、虚拟目录以及应用程序池的配置。system.webServer 部分组包含所有其他设置(包括全局 Web 默认值)的配置。
还可以使用<位置>标记将 URL 特定配置存储在 ApplicationHost.config 中。IIS 7.0 还可以读取服务器上网站和应用程序的代码或内容目录中的 URL 特定配置以及 ASP.NET 配置并将其写入到 Web.config 文件中。
如何解决这些问题?对此更改应做哪些准备工作?
由于 Windows Server 2008 是主要版本,因此您应该花一些时间使自己熟悉这些新的配置选项。
尽管 IIS 7.0 设计为具有兼容性(请参阅我是否需要更改任何现有代码?部分),但在 IIS 7.0 下进入生产之前,还是应该对目前在 IIS 6.0 下运行的生产网站和 WCF 服务进行全面测试
如果您使用的是自定义 IIS 6.0 命令行脚本,可能希望将其转换为 IIS 7.0。请参阅本主题后面的我是否需要更改任何现有代码?部分。
管理工具
IIS 7.0 引入了以下完全重写的新管理工具,用于管理 IIS:
IIS 管理器的图形用户界面
命令行工具 appcmd.exe
基于支持直接编辑设置的 .NET Framework 2.0 配置存储的配置存储
可以读取或更改配置存储中的设置的 WMI 提供程序
管理接口 Microsoft.Web.Administration,它显示的信息与 WMI 提供程序显示的信息相同
此外,Windows Server 2008 还附带 IIS 6.0 MMC 管理单元以支持远程管理并管理 FTP 站点。
可以单独安装管理工具和 Web 服务器组件。
IIS 7.0 还包含一个新的 WMI 提供程序,该提供程序扩大了所有 IIS 和 ASP.NET 配置的脚本访问范围。
Microsoft.Web.Administration 接口提供了一个强类型的管理接口,用于检索由 WMI 脚本显示的相同数据。
IIS 6.0 命令行脚本也已经替换为新的功能强大的命令行工具 appcmd.exe。
为什么此更改非常重要?
新的管理工具完全支持管理职责的分布式配置和委派。委派可以是非常特定的,从而允许管理员针对各个情况精确地确定委派的功能。
工作方式有何不同?有任何依存关系吗?
新的管理工具完全支持新的 IIS 7.0 分布式配置。它们还允许委派各个站点和应用程序的配置的访问权限(非管理权限)。管理工具支持非管理员,甚至使用非 Windows 凭据对特定站点或应用程序进行身份验证,以及仅管理该作用域的配置。
新的 IIS 管理器 UI 支持通过 HTTP 的远程管理,从而允许无缝地本地、远程、甚至跨 Internet 的管理,而不需要在防火墙上打开 DCOM 或其他管理端口。
管理工具是完全可扩展的,从而使开发人员能够使用 .NET Framework 构建新的管理模块以轻松插入新的管理用户界面模块中,这些新的管理用户界面模块的工作方式与 IIS 7.0 附带的模块的工作方式一样透明。
核心服务器
IIS 7.0 核心 Web 服务器包含对 IIS 6.0 的一些基本更改。例如,本机代码和托管代码都通过一个请求管道进行处理。此外,IIS 7.0 还采用了一个可以根据您的需要在其中添加或删除组件(称为模块)的 Web 服务器引擎。
为什么此更改非常重要?
这些更改能够大大减少受攻击面,提高了可扩展性并且增加了对通过创建托管代码模块来扩展 IIS 7.0 核心功能的支持。新的工作进程 Web 核心还提供了对请求管道中所有通知事件的访问权限。集成的等级是前所未有的,并且允许对所有类型的 Web 内容使用现有的 ASP.NET 功能(如基于表单的身份验证或 URL 身份验证)。
工作方式有何不同?
在以前版本的 IIS 中,默认情况下内置了所有功能,并且没有简单的方法可以扩展或替换该功能的任何部分。但是,IIS 7.0 核心分成了 40 多个独立的功能模块。该核心还包括用于构建核心服务器模块的新的 Win32 API。核心服务器模块是 Internet 服务器应用程序编程接口 (ISAPI) 筛选器和扩展的新的、功能更强大的替代品,但这些筛选器和扩展在 IIS 7.0 中仍然受支持。
由于开发了所有 IIS 核心服务器功能以便 IIS 7.0 可以使用新的 Win32 API 并且作为不连续的功能模块,因此您可以添加、删除、甚至替换 IIS 功能模块。
IIS 7.0 还包含对使用 .NET Framework 开发核心 Web 服务器扩展的支持。IIS 7.0 已经集成了 ASP.NET 的现有 IHttpModule API,从而使您的托管代码模块能够针对所有请求访问请求管道中的所有事件。
如何解决这些问题?
请参阅本主题的我是否需要更改任何现有代码?部分,特别是在使用 ISAPI 筛选器时非常有用。
诊断
IIS 7.0 包含两项重大改进,这些改进有助于对错误网站和应用程序进行诊断和疑难解答。
为什么此功能非常重要?
IIS 7.0 中的诊断和疑难解答的更改允许开发人员或管理员实时查看服务器上运行的请求。现在,可以筛选难以再现的错误条件并且用详细的跟踪日志来自动捕获错误。
工作方式有何不同?
IIS 7.0 引入了一个新的运行时状态和控制 API,它提供有关应用程序池、工作进程、站点、应用程序域,甚至运行请求的实时状态信息。
该信息通过本机组件对象模型 (COM) API 来显示。API 自身被封装并通过新的 IIS WMI 提供程序 appcmd.exe 和 IIS 管理器来显示。这样可以允许用户快速方便地检查 Web 服务器状态,而不考虑所使用的管理环境如何。
IIS 7.0 在整个请求和响应路径中还包含详细的跟踪事件,从而允许开发人员在请求前进到 IIS,并通过 IIS 请求处理管道进入任何现有页面级别的代码,然后停止到响应时跟踪请求。使用这些详细的跟踪事件,开发人员不但可以了解请求路径和提升为请求结果的任何错误信息,而且还可以了解使用的时间和帮助解决所有类型的错误的其他调试信息以及系统停止响应的时间。
若要启用这些跟踪事件的收集,可以将 IIS 7.0 配置为根据使用的时间或者错误响应代码自动捕获任何给定请求的完整跟踪日志。
我是否需要更改任何现有代码?
IIS 7.0 构建为与现有版本兼容。所有现有 ASP、ASP.NET 1.1 和 ASP.NET 2.0 应用程序都可以在 IIS 7.0 上运行,而无需更改任何代码(使用兼容的 ISAPI 支持)。
所有现有的 ISAPI 扩展和大多数 ISAPI 筛选器也将继续工作,没有什么变化。但是,IIS 7.0 中不支持依赖于 READ RAW DATA 通知的 ISAPI 筛选器。
对于现有的 Active Directory(R) 服务界面 (ADSI) 和 WMI 脚本,IIS 7.0 将提供与以前版本相同的功能,从而使它们能够直接针对新的配置存储运行。
Windows Server 2008 的所有版本中是否都提供此服务器角色?
在 Windows Server 的所有版本中都可以使用 IIS 7.0。各个版本之间的功能没有差别。IIS 7.0 可用于 32 位和 64 位平台。