Windows Server AppFabric 简介

Windows Server AppFabric 扩展了 Windows Server 以为 Web 应用程序和中间层服务提供增强的托管、管理和缓存功能。 AppFabric 托管功能向 Internet 信息服务 (IIS)、Windows Process Activation Service (WAS) 和 .NET Framework 4 添加了服务管理扩展。其中包括托管服务和托管管理工具,这些工具使部署、配置和管理基于 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 的服务变得更加容易。 AppFabric 缓存功能向 Windows Server 添加了一个分布式的内存中对象缓存,它使扩展高性能 .NET 应用程序(特别是 ASP.NET 应用程序)变得更加容易。

从仅作为服务公开某些功能以供其他应用程序使用到在许多服务间进行复杂协调的应用程序本身,如今许多类型的应用程序中都内置了服务和面向服务的体系结构。 构建可在此服务领域中轻松加入并执行的应用程序的需求空前高涨。 现今应用程序的核心结构通常是将数据驱动的事务性组件(如在网站上下订单)与通过中间层管理这些事务的高度分布式业务逻辑相结合。

通常,部署、管理和监控中间层服务是一个劳动密集型过程,需要开发人员创建托管基础结构,并耗费时间为其应用程序创建自定义部署解决方案。 即使在应用程序部署之后,开发人员通常还需要通过手动修改配置文件来管理应用程序。 AppFabric 可以帮助减轻此负担,它简化了服务部署、提供了可自定义的监控解决方案,还提供了一个功能丰富的管理工具集,所有这些都可以通过 IIS 管理控制台直接进行访问,或使用 Windows PowerShell 的 AppFabric 模块编写脚本。

对开发人员的任务要求也逐步提高,他们需要交付具备高响应速度和高可伸缩性的应用程序。 这不仅仅适用于中间层服务,还适用于 Web、移动和桌面应用程序。 随着对应用程序需求的不断提高(例如网站的访问量增加,或者其他组开始使用您的共享服务),昂贵的数据访问通常可能会严重限制应用程序的性能和伸缩性。 在数据库领域,缓存是一个已被广泛接受的解决方案,同时它还逐渐被视为是交付高性能 Web 应用程序和复合服务的基础组件。 在这两种情况下,您可以使用 AppFabric 缓存服务提高数据密集型 .NET 应用程序和服务的性能和可伸缩性。 AppFabric 缓存服务提供了具备高可用性的分布式内存中缓存,可轻松进行弹性扩展(向外扩展/向内扩展),而与应用程序或数据层无关。 借助 .NET API 及与 ASP.NET 和 PowerShell 的无缝集成,AppFabric 缓存服务确保您能够以最低的代码中断和一致的管理体验将缓存引入到您的解决方案中。

以下部分探讨托管中间层服务和扩展 Web 应用程序中的一些挑战,并介绍 AppFabric 提供的解决方案。

有关 AppFabric 的详细信息,请参阅 Windows Server 开发人员中心 (https://go.microsoft.com/fwlink/?LinkId=182970)。

托管服务

挑战

设置应用程序(包括基于 WCF 和 WF 的服务)的宿主环境可能是一个既复杂又耗时的过程。 虽然 IIS/WAS 为此类应用程序提供了可靠的宿主环境,但要使用其功能,可能需要大量开发工作、自定义部署解决方案和手动配置过程。 在部署和配置了解决方案之后,管理服务可能会有很大难度。

解决方案

使用 AppFabric 托管服务,可以轻松启动和运行基于 WCF 和 WF 的服务。 您可以在不开发其他托管功能的情况下利用 AppFabric 的托管功能。 托管服务通过提供 WAS 宿主环境的默认配置扩展了 WAS 的托管功能。 托管服务包含工作流管理服务提供的一些功能,其中包括锁定/重试、自动启动、持久计时器和命令队列。

AppFabric 托管管理提供了一些具有控制、监控和查询功能的工具,可以更加轻松地管理正在运行的工作流实例。 您还可以通过标准方式配置 WAS 和 WAS 内托管的应用程序。 通过托管管理工具,可以配置服务终结点的地址、管理自动启动激活和配置安全与性能设置。

有关 AppFabric 的托管功能的详细信息,请参阅托管概念

AppFabric 内存中缓存平台

挑战

使用内存中缓存存储常用应用程序数据是提高应用程序性能的稳固之法。 内存读写要比磁盘读写快几个数量级。 但是,内存中缓存大小通常会受到运行应用程序的计算机的可用内存量限制,而内存中缓存中存储的数据可能会由于计算机内存的固有易变性而完全丢失。 在开发可以完全使用内存中缓存的应用程序时,由于内存缓存中缺乏用于存储和检索对象的应用程序编程接口 (API),会使应用程序的开发受到进一步的限制。 缓存管理功能的缺乏也可能会阻碍使用缓存的应用程序开发。

解决方案

使用 AppFabric 缓存功能,您可以将多台计算机的内存容量合并到一个统一的缓存群集,从而可以帮助您轻松且低廉地扩展 .NET 应用程序。 这些功能包括缓存服务、缓存客户端和缓存管理工具。 AppFabric 缓存服务是高度可伸缩的服务,允许将许多计算机配置为缓存群集(可作为一个统一的内存缓存)的节点。 缓存服务通过在不同缓存主机上存储缓存数据副本,提供了支持该数据连续可用性的高可用性功能。 当在多服务器群集中启用了高可用性时,即使缓存服务器失败,您的应用程序仍可以检索其缓存数据。

缓存服务提供了全面且完全备案的 API 集,以将内存中缓存使用与基于 .NET 的应用程序集成。 此外,与 ASP.NET 的无缝集成支持在缓存中存储会话状态。 这可以为快速提高 ASP.NET 站点的性能和可伸缩性提供一种经济有效的途径。 AppFabric 缓存管理提供了一整套可创建、配置和管理内存中缓存的管理工具。 AppFabric 的缓存和托管功能均包含在集成安装程序包中。

有关详细信息,请参阅 Windows Server AppFabric 缓存功能

暂留工作流

挑战

在 Windows Workflow Foundation 启动并运行期间获取长期运行的状态服务可能是一项极具挑战性的过程。 为了设置暂留以确保工作流可长期使用,可能需要创建暂留存储、创建架构、设置暂留数据库,然后进行配置。 在生产环境中,某个数据库可能托管了已调用的持久工作流实例。 其中某些工作流实例可能已挂起,某些实例可能正在运行。 可能很难发现系统出现了什么状况。

解决方案

借助 AppFabric,可非常方便地完成暂留工作。 AppFabric 托管服务使用随 .NET Framework 4 一起提供的 SQL 暂留存储,并创建应用程序可使用的默认暂留数据库,这样,您可以在一组计算机间扩展状态服务。 您可以使用自己选择的自定义暂留存储。 而且,AppFabric 托管管理为您提供了监控暂留数据库中活动所需的工具,或长期运行的工作流。

有关 AppFabric 中暂留功能的详细信息,请参阅暂留概念

监控服务

挑战

借助基于 WCF 和 WF 的应用程序,始终无法看到服务和工作流实例的活动。 如果服务和工作流在多台计算机上,应该在哪激活它们? 其中哪些已经激活? 它们处于什么状态? 您是否收到错误?

解决方案

通过 AppFabric 托管服务和托管管理,可以对正在运行的 WCF 和 WF 服务执行运行状况监控和故障排除,并控制这些服务。 在 IIS Manager 的“AppFabric 仪表板”页中可以完成这些操作。 通过 AppFabric 仪表板,可以不断了解系统的状态。 监控数据可以帮助您更好地控制工作流实例。 在将监控应用程序的执行成本保持在一个适当水平的同时,还可以灵活更改生成数据的查询,以及选择监控级别,以使您能够收集足够的数据来监控应用程序的运行状况。 AppFabric 监控是基于 .NET Framework 中提供的跟踪功能构建的。

事件存储在可通过托管管理工具访问的监控数据库中。 跟踪参与者将事件写入 Windows 事件跟踪 (ETW) 会话,然后与 AppFabric 托管功能一起安装的事件收集服务从 ETW 会话读取事件,从而提供高性能的数据处理。 在安装 AppFabric 托管功能时,安装程序会设置专为在生产环境中使用的可配置监控基础结构。 您可以使用随 .NET Framework 4 一起提供的 SQL 监控存储,或者使用您自己选择的自定义存储。 可以将 AppFabric 配置为自动清除监控数据库。

有关 AppFabric 中监控功能的详细信息,请参阅监控概念

管理工具

挑战

IT 专业人员和开发人员需要功能强大且易于使用的工具来帮助他们处理生产环境中基于 WCF 或 WF 的服务。 为了管理应用程序,您可能需要使用多个工具,并手动编辑配置文件。 您可能看不到有关服务的数据,无法控制您的配置。 可能很难确定如何设置应用程序的配置,因为您可能需要访问多个配置文件:使用服务配置编辑器打开这些配置文件,然后编辑其配置元素。

解决方案

AppFabric 托管功能为服务管理提供了一组丰富的 IIS Manager 扩展。 AppFabric 仪表板使您可以洞悉系统的运行状况,而统一的配置用户界面使您可以控制服务配置。 必要时,可以恢复、挂起、取消或终止暂留的工作流实例以及启动或停止服务。 由于用户界面基于 IIS Manager,因此基于 WCF 和 WF 的服务的管理员体验和工具与 Web 应用程序的类似。 您可以在 IIS Manager 中执行许多应用程序管理任务,而无需手动转换工具或编辑配置文件。

在 IIS Manager 的 AppFabric 扩展中,可以轻松枚举某台服务器上的服务,并可以轻松更改查询以调整数据。 可以看到处于运行状态或非运行状态的工作流实例的数量。 可以查看暂留的工作流实例或跟踪工作流实例。

在 IIS Manager 中,可以在单一对话框中查看服务的配置。 在该对话框中,您可以设置服务的配置,并设置应用程序、网站或服务器的默认配置设置,这些设置可由服务继承。 AppFabric 托管服务使用 .NET Framework 4 的行为合并功能,这使得服务可以从 IIS 层次结构的任何级别继承配置属性。 在许多配置方案中,通过托管服务,您可以在相应的 Web.config 文件中进行配置设置,而无需直接访问该文件。

托管管理工具包括一些 Windows PowerShell cmdlet,使用这些 cmdlet,您可以从 PowerShell 控制台或通过可用于以自动化方式进行配置的脚本管理应用程序。 这些 PowerShell 模块包括用于 AppFabric 托管服务的 ApplicationServer 模块和用于 AppFabric 缓存服务的 DistributedCacheAdministration 和 DistributedCacheConfiguration 模块。

AppFabric 包括一个安装 AppFabric 托管和缓存功能的安装向导以及一个配置这些功能的配置向导。 您还可以使用 WebAPI 安装 AppFabric。

有关 AppFabric 管理工具的详细信息,请参阅管理工具

开发服务

挑战

对于新产品,通常必须要学习新的应用程序开发方法才能充分利用新功能或与新产品集成。

解决方案

对于 AppFabric 托管服务,除使用 Windows Process Activation service (WAS) 确保应用程序能够托管在 IIS/WAS 宿主环境中之外,对创建应用程序没有任何特殊要求。 Visual Studio® 中的默认项目模板(WCF 服务应用程序和 WCF 工作流服务应用程序)支持 IIS/WAS,并由 AppFabric 进行管理,无需任何修改。 如果目前您的应用程序宿主在 WAS 中,则可在不进行任何修改的情况下将其部署到 AppFabric。

有关部署应用程序以便在 AppFabric 中使用的详细信息,请参阅部署应用程序

部署服务

挑战

可能很难将一个服务从一台服务器部署到另一台服务器,或者很难使用统一的配置将一个服务部署到多台服务器。

解决方案

AppFabric 托管服务使用 Microsoft Web 部署工具(也称为 Web 部署工具)将服务部署到其宿主环境中。 Web 部署工具与 IIS 和 Visual Studio 环境集成,因此您可以直接从 Visual Studio 中轻松打包和部署服务,或直接从 IIS Manager 部署预先打包的应用程序。

有关在 AppFabric 中开发应用程序的详细信息,请参阅典型部署部署应用程序

托管服务和管理可扩展性

挑战

一些预先打包的解决方案很难使用。

解决方案

AppFabric 托管功能为您提供了创建自定义解决方案的扩展点。 您可以向 IIS Manager 添加模块,并且可以在 AppFabric 托管管理 cmdlet 的基础上创建自己的 UI 工具。 您可以为应用程序的目标用户提供自定义 UI。 您可以创建自己的 cmdlet,或者使用管道根据需要合并 AppFabric cmdlet。 扩展点还可用于托管服务的监控和暂留功能。 您可以使用自定义监控或暂留存储。

有关 AppFabric 中可扩展性的详细信息,请参阅 AppFabric 扩展性

  2011-12-05