65.9K
CodeProject 正在变化。 阅读更多。
Home

AppFabric 缓存扩展

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2012年1月1日

CPOL

4分钟阅读

viewsIcon

43038

downloadIcon

1234

一个可以插入到 WCF 服务或任何其他客户端以利用 AppFabric 缓存功能的组件

引言

此组件使用 Windows Server AppFabric 缓存 在服务器之间提供分布式缓存,可以插入现有服务/应用程序以直接使用 AppFabric 进行缓存。此组件可用于

I. 缓存传出的 WCF 服务响应 - 如果响应消息在缓存中,自定义通道将立即从缓存中返回响应消息,而不会调用底层服务。这不需要对客户端实现进行任何更改。在服务方面,需要在要缓存响应的操作上应用自定义属性。

II. 缓存业务层中的特定对象,以缓存从数据存储(数据库或外部服务)检索到的数据。它包含一个 CacheHelper 类,该类目前支持

  1. 读写 AppFabric 缓存的辅助方法。
  2. 一个 API,用于返回存储数据到缓存所需的加密密钥。
  3. 一个 API,用于重置缓存中对象的生存时间。

安装和配置 AppFabric

AppFabric 没有图形界面。可以使用 PowerShell 管理 AppFabric。确保 AppFabric 缓存服务正在运行。可以通过调用 Get-CacheHost 命令来确定缓存主机是否正在运行。

以下是此命令对于双服务器缓存集群的示例输出。

HostName : CachePort      Service Name            Service Status Version Info
--------------------      ------------            -------------- ------------
CacheServer1:22233        AppFabricCachingService UP             1 [1,1][1,1]
CacheServer2:22233        AppFabricCachingService UP             1 [1,1][1,1]

在此示例中,CacheServer1CacheServer2 都在运行。

下一步是创建一个命名缓存,即用于存储数据的逻辑容器。您可以通过 Windows PowerShell 中的 New-Cache cmdlet 来完成此操作。

New-Cache appFabricCache

查看缓存配置设置

要查看缓存的当前设置,请使用 Get-CacheConfig 命令。

Get-CacheConfig appFabricCache

在前面的示例中,Get-CacheConfig 命令显示了 Cache1 的缓存配置设置。以下是此命令的输出示例:

CacheName            : appFabricCache
TimeToLive           : 10 mins
CacheType            : Partitioned
Secondaries          : 0
IsExpirable          : True
EvictionType         : LRU
NotificationsEnabled : False

使用此组件的步骤

  1. 将引用添加到缓存扩展库。
  2. 您必须更新应用程序的 web.config 文件,如下所示:

AppFabric/WebConfig.png

缓存组件已准备好使用。以下是我们将利用此组件的两个不同地方:

[CacheOperationBehavior(MinutesToCache = 5)] 
[OperationContract]
CustomerDC GetCustomer(string customerID);
  1. [CacheOperationBehavior] 属性应用于要缓存其响应的操作。
  2. 缓存对数据库的调用的响应
    //Read from Cache
    Customer custObj = (Customer)CacheHelper.Get(CUST_KEY);
    //If not present in cache
    if(custObj == null)
    {
            //Read from datastore
          custObj = ReadFromDataStore();
            //Populate Cache
         cacheHelper.Put(CUST_KEY ,custObj); 
          return custObj;
    }
    1. 定义密钥的常量,并使用缓存助手 API GetEncryptedKey(string) 获取加密密钥。
    2. 使用如下所示的缓存旁路模式

实现细节

要使用 AppFabric 缓存,组件需要以下库:

  • Microsoft.ApplicationServer.Caching.Core
  • Microsoft.ApplicationServer.Caching.Client

I. 缓存传出的 WCF 服务响应

客户端的传入调用通过传输通道接收,并在到达 **调度程序** 之前经过一些通道。调度程序将传入的调用与适当的操作关联起来,然后调用它。

我创建了一个自定义 OperationInvoker 来自定义调用数据存储的行为。

它是如何工作的?

AppFabric/Dispatcher.png

密钥是通过输入参数和操作名称的组合生成的。但由于参数可以是任意数量的对象,因此它们首先被序列化为 XML 字符串。

它还具有 TimeInMinutes 属性,用于指示缓存对象的生命周期。

II. 缓存从数据存储检索到的数据

目前,CacheHelper 类公开了以下 API:

  1. DataCache 对象的 get 和 put 方法。
  2. 重置对象的超时值 - 定义对象在过期之前在缓存中保留多长时间。为对象指定的值将覆盖缓存的默认设置。
  3. string 创建加密密钥。

健康监控工具

性能监视器

AppFabric 缓存功能安装了几个性能监视器计数器。有关可用计数器的更多信息,请参阅 AppFabric 缓存的性能计数器。您可以观察或记录一些计数器值来确定典型缓存群集行为的基线。例如,在 AppFabric 缓存:缓存 类别中,您可能会发现 每秒总客户端请求数 的值保持在与一天中的时间变化的通用范围内。

Windows PowerShell

有几个 Windows PowerShell 命令可以指示缓存群集的当前状态和健康状况。本节演示如何使用以下命令:

  • Get-CacheHost
  • Get-CacheClusterHealth
  • Get-CacheStatistics

资源

http://www.microsoft.com/download/en/details.aspx?id=15848 下载 Windows Server AppFabric。

© . All rights reserved.