AppFabric 缓存扩展





5.00/5 (2投票s)
一个可以插入到 WCF 服务或任何其他客户端以利用 AppFabric 缓存功能的组件
引言
此组件使用 Windows Server AppFabric 缓存 在服务器之间提供分布式缓存,可以插入现有服务/应用程序以直接使用 AppFabric 进行缓存。此组件可用于
I. 缓存传出的 WCF 服务响应 - 如果响应消息在缓存中,自定义通道将立即从缓存中返回响应消息,而不会调用底层服务。这不需要对客户端实现进行任何更改。在服务方面,需要在要缓存响应的操作上应用自定义属性。
II. 缓存业务层中的特定对象,以缓存从数据存储(数据库或外部服务)检索到的数据。它包含一个 CacheHelper
类,该类目前支持
- 读写 AppFabric 缓存的辅助方法。
- 一个 API,用于返回存储数据到缓存所需的加密密钥。
- 一个 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]
在此示例中,CacheServer1
和 CacheServer2
都在运行。
下一步是创建一个命名缓存,即用于存储数据的逻辑容器。您可以通过 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
使用此组件的步骤
- 将引用添加到缓存扩展库。
- 您必须更新应用程序的 web.config 文件,如下所示:
缓存组件已准备好使用。以下是我们将利用此组件的两个不同地方:
[CacheOperationBehavior(MinutesToCache = 5)]
[OperationContract]
CustomerDC GetCustomer(string customerID);
- 将
[CacheOperationBehavior]
属性应用于要缓存其响应的操作。 - 缓存对数据库的调用的响应
//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; }
- 定义密钥的常量,并使用缓存助手 API
GetEncryptedKey(string)
获取加密密钥。 - 使用如下所示的缓存旁路模式
- 定义密钥的常量,并使用缓存助手 API
实现细节
要使用 AppFabric 缓存,组件需要以下库:
Microsoft.ApplicationServer.Caching.Core
Microsoft.ApplicationServer.Caching.Client
I. 缓存传出的 WCF 服务响应
客户端的传入调用通过传输通道接收,并在到达 **调度程序** 之前经过一些通道。调度程序将传入的调用与适当的操作关联起来,然后调用它。
我创建了一个自定义 OperationInvoker
来自定义调用数据存储的行为。
它是如何工作的?
密钥是通过输入参数和操作名称的组合生成的。但由于参数可以是任意数量的对象,因此它们首先被序列化为 XML 字符串。
它还具有 TimeInMinutes
属性,用于指示缓存对象的生命周期。
II. 缓存从数据存储检索到的数据
目前,CacheHelper
类公开了以下 API:
DataCache
对象的 get 和 put 方法。- 重置对象的超时值 - 定义对象在过期之前在缓存中保留多长时间。为对象指定的值将覆盖缓存的默认设置。
- 从
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。