本文转载自https://msdn.microsoft.com/zh-cn/library/ff384253.aspx,主要内容是对msdn中对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的一段综述介绍的文字,总的来说,AppFabric提供了可以集成到 Web 应用程序和桌面应用程序的分布式缓存。其原名为Velocity,后更名为AppFabric。 AppFabric 能够提高性能、可伸缩性和可用性,而从开发人员的角度来看,其行为方式与普通的内存缓存一样。任何可序列化的对象都可以缓存,例如 DataSet、DataTable、二进制数据、XML、自定义实体以及数据传输对象。
本片博客中,我们将深入了解AppFabric系统的基本功能和它内部的工作原理。
Windows Server AppFabric 增强了 Windows Server 中用于托管、管理、安全和扩展使用 Microsoft .NET Framework 4 构建的应用程序的 Application Server 角色。AppFabric 包括托管功能和缓存功能。
设置应用程序(包括基于 WCF 和 WF 的服务)的宿主环境可能是一个既复杂又耗时的过程。 虽然 IIS/WAS 为此类应用程序提供了可靠的宿主环境,但要使用其功能,可能需要大量开发工作、自定义部署解决方案和手动配置过程。 在部署和配置了解决方案之后,管理服务可能会有很大难度。 使用 AppFabric 托管服务,可以轻松启动和运行基于 WCF 和 WF 的服务。 用户可以在不开发其他托管功能的情况下利用 AppFabric 的托管功能。 托管服务通过提供 WAS 宿主环境的默认配置扩展了 WAS 的托管功能。 托管服务包含工作流管理服务提供的一些功能,其中包括锁定/重试、自动启动、持久计时器和命令队列。AppFabric 托管管理提供了一些具有控制、监控和查询功能的工具,可以更加轻松地管理正在运行的工作流实例。用户还可以通过标准方式配置 WAS 和 WAS 内托管的应用程序。 通过托管管理工具,可以配置服务终结点的地址、管理自动启动激活和配置安全与性能设置。
Windows Server AppFabric 托管功能通过提供以下功能,增强对 Windows Process Activation Service (WAS) 中 .NET Framework v4 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 服务的托管:
AppFabric 由 Windows 服务器中托管和管理 WCF 和 WF 服务的 Windows Process Activation Service (WAS) 和应用程序服务器角色演变发展而来。同样,AppFabric 与 .NET Framework 4 密切相关,并且充分利用作为框架产品主要功能提供的多种功能,例如暂留、监控和托管 WCF 和 WF 服务。AppFabric 还与 Internet Information Services (IIS) 相集成,以在 IIS 管理控制台中提供管理和监控工具。 以下体系结构图显示了部分 AppFabric 以及 .NET Framework 4 和 AppFabric 使用的 IIS 组件:
上述体系结构图显示了AppFabric管理、托管的基础技术,下面我们自底向上分析:
AppFabric 构建的基础是 IIS 和 WAS 提供的强大的托管环境。WAS 中的托管应用程序提供面向服务的体系结构 (SOA) 所需的多种功能,例如:
但是,对于提供的所有功能,找不到 WCF 和 WF 服务的部署、管理和监控功能,需要应用程序开发人员来提供部署机制、管理指导和自定义监控解决方案。同时,由于按需激活和进程回收,因此托管长期运行进程(例如,IIS 和 WAS 中的工作流)十分具有挑战。如果应用程序要求,则状态暂留和主机激活必须由开发人员明确配置。AppFabric 通过提供工具和服务来解决这些问题,以便您能轻松部署和监控应用程序,以及配置托管环境的功能。
ASP.NET 提供了使得 WAS 托管环境具有吸引力的许多基本功能,例如应用程序域、生存期管理、运行状况监控、常规配置系统和动态编译。ASP.NET 还为使用 HTTP 接收消息的 WCF 和 WF 服务提供基于消息的激活。
WCF 和 WF 服务为创建 SOA 应用程序提供构建基块,这些服务是 AppFabric 的核心。WCF 为开发可通过 Web 进行通信的 SOA 应用程序提供统一编程模型,包括与使用其他技术构建的应用程序的互操作性。WF 提供可用于实现长期运行进程的工作流引擎。
当实现执行应用程序的状态暂留或捕获监控信息时,首要考虑因素之一就是数据的存储媒体。这对于 SOA 应用程序尤其重要(此数据存储应具有可靠性、安全性、可缩放性和高可用性)。由于您的应用程序可能包含场中多个服务器上运行的组件,因此还必须可从多个服务器同时轻松访问数据存储。 为满足这些条件,AppFabric 将所有暂留和监控信息存储在数据存储中。
托管应用程序的挑战之一是确保应用程序能够承受事件(例如,系统故障或重新启动)。AppFabric 可在系统故障或重新启动时,通过使用暂留提供程序实现上述目标,该提供程序允许 WF 服务将其状态保存到暂留数据库中,然后在正常系统上继续执行。 除了为系统故障或重新启动提供持久性之外,长期运行 WF 服务可以在正常执行期间挂起以便为其他应用程序释放资源,以及当消息到达时继续必须由暂留的工作流实例处理的操作。还可以使用持久计时器在特定间隔之后触发 WF 服务以继续,该计时器可监控暂留的 WF 实例上的“运行位置”指标并继续实例。
AppFabric 将 ServiceHost(托管 WCF)和 WorkflowServiceHost(托管 WF)服务托管环境与 IIS 和 WAS 相集成。例如,两个主机都参与了正常的 appDomain 关闭和回收,以及应用程序自动启动进程。尽管 IIS 和 WAS 的结合功能为 WCF 和 WF 应用程序提供了强大的托管环境,但充分利用这些功能通常需要开发人员在部署和配置应用程序上投入相当大的精力。AppFabric 提供一套全面的工具,允许以标准方式配置应用程序,而无需自定义部署解决方案或手动配置过程。
由于使用 WCF 和 WF 服务构建的解决方案具有耦合和分布松散的特质,因此监控和疑难解答通常是十分困难的流程,需要查看每个独立服务,然后将观察的事件手动关联起来,以便获得应用程序内的整体运行情况。使用 AppFabric,可以从各种源中收集和关联事件,以提供运行进程执行的整体情况。此数据存储在数据库中,可以使用 IIS 管理控制台中托管的监控工具或 用于 Windows PowerShell 的 ApplicationServer 模块 cmdlet 对其进行检索。
为支持广泛的管理情形,AppFabric 通过将 用于 Windows PowerShell 的 ApplicationServer 模块 作为 cmdlet 提供对所有管理功能的访问。此实现方法为您提供使用管理功能的多种方法,例如从 Windows PowerShell 命令行 Shell 交互调用 cmdlet、创建用于调用 cmdlet 的脚本或从自定义应用程序中调用 cmdlet。
为了提供 WF 和 WCF 服务的集中配置和管理,AppFabric 提供了适用于 IIS Manager 中 WCF 和 WF 服务的丰富的管理和监控工具集。AppFabric 还使用 MSDeploy 向 WAS 托管环境部署服务。用户可以使用 MSDeploy 部署包含 WCF 和 WF 服务的应用程序。
AppFabric 托管功能依靠 WAS 为 WCF 和 WF 服务提供宿主环境,并扩展 IIS 管理控制台,为 WAS 托管的服务提供管理和配置工具。如果您在 WAS 中有已托管的 WCF 或 WF 服务,使用 AppFabric 托管服务可以枚举和管理这些服务。但是,如果服务是在托管的 Windows 服务或独立的应用程序中进行托管,则必须首先将服务迁移到 WAS 宿主环境,才能对这些服务使用 AppFabric 托管功能。
当前应用程序部署方法包括 Xcopy 的使用或基于 Windows Installer 等技术的部署程序包的使用。Xcopy 将应用程序项目从与虚拟目录相对应的文件夹移动到目标文件夹。部署程序包用来部署其他项目,例如证书、与应用程序池相关联的用户帐户、注册表设置以及数据库数据。虽然现有部署技术适用于单一服务器部署,但 Xcopy 通常过于简单、而创建 Windows Installer 程序包却太过复杂时,可能需要实施特定的开发知识。二者都不适用于出于扩展目的将服务部署到服务器场。 IIS Web 部署工具 MSDeploy 提供了简单的基于程序包的部署功能,该功能可从命令行、IIS 管理控制台或 Visual Studio 2010 进行使用。MSDeploy 还可用来将一台计算机同步到另一台计算机。
应用程序关键组件的可管理性是指通过应用配置选项,在不更改基础代码的情况下影响应用程序行为的能力。AppFabric 为托管应用程序和服务的配置提供了以下功能: 简单应用程序配置
AppFabric 托管功能使用的引导原则是,仅将 Web.config 文件中的配置设置用于管理目的。无法访问源代码中定义的设置,并且无法使用 AppFabric 管理工具对其进行修改。此原则适用于命令性代码(如 C#)和声明性代码(如 XAML)。即使代码自身容易分辨(例如 XAML),设置仍然被视为锁定状态并且无法进行访问。 若要简化配置管理,AppFabric 将为每个由安装程序配置的服务器节点应用默认设置。这些设置在根 Web.config 文件中定义,并且可由任意托管的应用程序使用。管理员还可以通过站点或应用程序 Web.config 文件应用特定站点或应用程序配置设置,以便为托管的应用程序应用更精确的跟踪或暂留行为。
通过 IIS 管理控制台提供的 WCF 配置选项
当前的 WCF 配置使用的是 WCF 服务配置编辑器工具 (SvcConfigEditor.exe),这对开发人员和 IT 专业人员提出了挑战。特别是服务配置编辑器的使用需要对 WCF 服务模型有相当彻底的了解,这会带来 IT 专业人员方面的额外开销。 AppFabric 通过为 WCF 和 WF 扩展熟悉且具有 IIS Manager 扩展的 IIS 管理控制台,来完成最常见的配置任务,以改进体验。示例包括启用跟踪、定义应用程序终止参数以及枚举所有运行的服务,均可使用 IIS Manager 扩展来完成。通过使用可用于 IIS 7.0 的 AppFabric 配置向导或 IIS 配置编辑器,可应用其他配置选项。
WF 暂留配置
若要为长期运行的业务过程支持耐久工作流的概念,WF 服务可持续进行暂留存储,并在特定事件(例如接收消息)发生时恢复处理。但是,配置暂留主要是一个手动过程,需要创建耐久存储机制支持的暂留服务。 为了简化工作流暂留的配置,支持服务器场配置,AppFabric 托管服务提供了基于 SQL Server 的暂留存储和 SQL 暂留提供程序,可由在 WAS 中托管的任何耐久工作流使用。通过 AppFabric 还可以使用您自己选择的自定义暂留存储和提供程序。AppFabric 允许由所有托管的应用程序继承的默认暂留设置或特定于单独应用程序的暂留设置配置。
Windows PowerShell cmdlet
虽然在 IIS 管理控制台内提供配置和管理选项可以轻松地管理托管的应用程序,但这通常需要创建可自动执行多步骤配置和管理方案的脚本。 为支持创建脚本解决方案,AppFabric 托管功能包括 Windows Powershell 的 ApplicationServer 模块,其中包含的 cmdlet 可以提供对托管应用程序配置和管理的同一级别访问,与 IIS 管理控制台提供的工具具有同样功能。
除了简化托管服务的部署、管理和配置,AppFabric 托管服务通过捕获运行时发出的跟踪信息并将其存储到监控数据库,使监控应用程序更为简单。一旦捕获,此信息可在 IIS 管理控制台的仪表板功能中使用,或者直接从监控数据库中使用。 从应用程序收集的信息可通过使用跟踪配置文件来进行自定义,使用跟踪配置文件可以捕获信息,例如活动状态(启动、停止和错误)、工作流内特定变量的内容或者应用程序通过使用自定义跟踪记录发出的自定义跟踪信息。
AppFabric 托管服务结合 WAS 使用,为中间层 WCF 和 WF 应用程序提供可靠的宿主环境。WAS 提供的功能有:
除了通常由 WAS 提供的功能,.NET Framework 4 还在激活托管的服务方面提供了一些增强功能。使用 .NET Framework 3.5 构建的服务激活需要创建一个必须使用此服务进行部署的单独“服务文件”(具有 .svc 扩展名)。此外,如果服务使用 WF,则必须使用此服务创建和部署其他可扩展应用程序标记语言 (XAML) 文件(具有 .xaml 扩展名)。.NET Framework 4 提供了直接激活 WF 服务的方式(无需创建和部署单独的 .svc 文件)。XAML 文件必须具有扩展名 .xamlx,以便由主机直接激活相关联的 WF 应用程序。WCF 和 WF 应用程序可直接从 Web.config 文件激活,并且不要求单独的 .svc 文件。 虽然简化的托管服务不需要服务文件,但这并没有影响 WAS 所采用的基于消息的激活技术。在 WAS 中托管服务时,将不会创建服务实例,直到接收到递送至该服务的消息。这表示最初服务启动时,必须通过分配内存、加载库以及创建对象等方式初始化新的实例。如果应用程序在处理时间敏感数据,则在启动各个服务中产生的延迟可能无法接受。即使没有处理时间敏感数据,依赖使用基于消息的激活也会限制服务接收数据的方式,因为基于消息的激活要求 WAS 激活器。现成的 .NET 为以下协议提供了激活器:
若要解决基于消息的激活的限制,AppFabric 托管服务可以利用 Windows Server 2008 R2 和 Windows 7 提供的 IIS 自动启动功能,在进行了部署以后自动启动托管 WAS 服务,而不是等待激活消息。
Windows Server AppFabric 缓存 功能使用彼此通信的服务器群集来形成单个统一的应用程序缓存系统。作为分配式缓存系统,所有缓存操作都抽象为单个参考点,称作缓存群集。换句话说,无论构成缓存群集的计算机有多少台,您的客户端应用程序都可以与群集中单个逻辑单元的缓存配合使用。 物理体系结构的主要组件包含缓存服务器、缓存主机 Windows 服务、缓存群集、基于 Windows PowerShell 的缓存管理工具、群集配置存储位置和缓存客户端。下图显示所有这些元素的关联情况。
AppFabric 缓存服务是运行在一个或多个服务器上的 Windows 服务。运行缓存服务的每个服务器均称为一个缓存服务器。对于每个缓存服务器,只可安装缓存服务的一个实例
缓存群集是以环状方式共同存储和分发数据的缓存服务的一个或多个实例的集合。数据存储在内存中,以最大程度地减少数据请求的响应次数。缓存群集的操作由角色进行管理,被命名为群集管理角色。群集管理角色的主要职责包括:
可以由指定的主要主机来执行群集管理,或通过将群集配置信息存储在 SQL Server 数据库中来执行。
每次群集启动时,必须从群集配置存储位置检索配置信息。将使用通用词条“存储位置”,因为位置由您选择的存储群集配置设置的方式所决定。下表显示可用于存储群集配置设置的三种可行方式,以及这些方法与群集管理选项的关系。
存储类型 | 存储位置 | 群集管理 |
---|---|---|
XML文件 | 共享网络文件夹 | 主要主机 |
SQL Server数据库 | SQL Server | SQL Server(默认)或主要主机 |
自定义提供程序 | 自定义存储 | 自定义存储 |
Windows PowerShell 是缓存服务的专用管理工具。Windows PowerShell 缓存管理 cmdlet 可以安装在任何域计算机上或缓存服务器上。通过安装 AppFabric 的缓存管理功能可以完成此操作。您必须具有对所有缓存服务器的管理员权限,才能使工具正常运行。
任何运行支持缓存的应用程序的应用程序服务器都可以宽泛地称为缓存客户端。对于要支持缓存的应用程序,应用程序必须使用 AppFabric 缓存程序集并以编程方式指定适当的应用程序配置设置,或在基于 XML 的应用程序配置文件中指定。
Windows Server AppFabric 中缓存群集的逻辑体系结构由命名缓存、区域和缓存对象组成。在下图中,命名缓存跨群集中的所有缓存主机,但区域仅限于群集中的一个缓存主机。
命名缓存也称为缓存,是一个可配置的内存中存储单元,所有应用程序都使用该单元将数据存储在分布式缓存中。您可以为每个应用程序配置一个或多个命名缓存。每个缓存可以独立于其他缓存进行配置,从而允许您为应用程序优化每个缓存的策略。 从上图中可以看出,每个缓存都跨群集中的所有缓存主机。首次设置 AppFabric 缓存功能时,会使用名称“默认”对缓存进行预先配置。可以将数据存储在此默认缓存中,也可以创建和使用命名缓存。 所有缓存都在群集配置中定义。可以使用 Windows PowerShell 管理工具创建或重新配置缓存。首次创建缓存时可能只能配置某些设置。可以稍后更改其他设置,但可能需要重新启动整个缓存群集才能使更改生效。
区域是可以放置在缓存中的附加数据容器。区域是一种缓存结构:它们不在群集配置设置中定义。区域是可选的;如果您想使用它们,必须借助应用程序代码通过使用 CreateRegion 方法在运行时明确创建它们。 借助区域,您可以采用其他方式检索缓存对象,而不是使用与它们一起缓存的特定密钥值。区域允许您使用描述性字符串(称为标记)来搜索区域中的所有缓存对象。可以将一个或多个标记与缓存中存储的每个对象相关联。 若要提供此增加的搜索功能,需要将区域中的对象限制于一个缓存主机。这样就导致使用该数据的应用程序无法实现分布式缓存的可伸缩优势。相比之下,如果您不指定区域,则可以在缓存群集中的所有缓存主机之间对缓存对象进行负载平衡。 区域提供搜索功能,但却将缓存对象限制于一个缓存主机,因此使用区域需要权衡功能和可伸缩性。
从缓存群集检索的对象采用其 System.Object 基类的形式,因此需要进行类型转换以将它们还原为其原始类型。当某个对象处于缓存中时,缓存群集会将附加信息与该对象关联。这些信息包括密钥、标记、版本号以及存储对象的缓存和区域。对于基本的缓存操作,没有必要将此附加信息返回给支持缓存的应用程序。对于基于标记的操作或并发操作,可能必须检索与对象关联的 Tags 或 Version。
Windows PowerShell 是 Windows Server AppFabric 缓存功能的专有管理工具。提供 130 多个标准命令行工具,以管理为重点的脚本语言帮助您实现控制和工作效率。除了 Windows PowerShell 附带的标准命令行工具之外,AppFabric 还提供了用于管理分布式缓存环境的其他命令。有关管理命令的详细信息,请参阅使用Windows PowerShell 管理 Windows Server AppFabric 缓存功能。
在缓存群集、属于该群集成员的缓存主机以及各个由缓存启用的应用程序中指定 Windows Server AppFabric 缓存配置详细信息。AppFabric 提供了许多选项,这些选项可用于指定和存储由缓存群集和客户端应用程序使用的配置详细信息。有关缓存配置选项的详细信息,请参阅使用Windows Server AppFabric 缓存配置选项。
Windows PowerShell是针对网络系统管理而开发出来的,是微软开发的下一代命令行外壳以及脚本语言,可以用于取代目前的CMD.EXE命令行界面以及VBScript脚本语言。 cmd.exe命令行界面是DOS命令行的继任者,而VBScript最开始主要针对用于网页设计。Windows PowerShell是基于.NET Framework面对对象的一种命令shell。它可以运行三种程序:内建的命令、外部程序和脚本。 Powershell内建命令是cmdlet,这些内建的命令并没有固化在Powershell程序中,而是通过一个插件的方式,作为一个或者多个DLL存储在硬盘上。 有关缓存Powershell Cmdlet的详细信息,请参阅使用AppFabric 缓存 PowerShell Cmdlet。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181035.html原文链接:https://javaforall.cn