第 7 章 缓存应用程序块

缓存应用程序块介绍

Enterprise Library 缓存应用程序块允许开发人员在应用程序中合并一个局部缓存,它支持内存内的缓存,和可选的可以是数据库存储或独立存储的后端存储。应用程序块可以不做修改的使用,它提供所有必须的获取、添加和移除缓存数据的功能。可配置的到期和清除策略也是应用程序块的一部分。

在构建企业范围发布的应用程序时,架构和开发人员都要面对许多挑战,缓存可以帮助他们战胜其中的某些挑战,包括:

性能

缓存用存储数据使用者尽可能关闭的相应数据来提高应用程序的性能,这避免了重复数据的创建、处理和传输。

可扩展性

在缓存中存储信息有利于节省资源,并在应用程序需求增加时提高可扩展性。

可用性

将数据存储在缓存中,应用程序也许可以在系统失败时幸存,如网络延迟、Web 服务问题和硬件错误。

普通场景

缓存应用程序块适用于下列性情况:

  • 必须重复访问表态数据或者很少改变的数据。

  • 在创建、访问或传输中数据访问是昂贵的。

  • 数据必须总是可用的,即使在源,如服务器不可用时。

可以在下列应用程序类型中使用缓存应用程序块:

  • Windows Forms

  • 控制台应用程序

  • Windows 服务

  • COM+ 服务器

  • ASP.NET Web 应用程序或者 Web 服务,如果需要的特性没有包括在 ASP.NET 缓存中。

缓存应用程序块将部署在一个独立的应用程序域中,每个应用程序域可以有一个或多个缓存,有或没有后端存储都可以。缓存不能在不同应用程序域中共享。

缓存应用程序块优化了性能,并且是线程安全和异常安全的。可以扩展它以包含自己的到期策略和后端存储。

示例应用代码

下列代码展示了如何添加一个条目到缓存中,并从缓存中取出一个条目。它创建了一个 Product 类型的对象,然后将它添加到缓存中,一起的还有为2的清除优先级、一条在条目到期后不刷新它的指令、以及从条目最后一次访问开始的5分钟的有效期。

注意

代码不包括 Product 类的定义。

例 7.1. C#

CacheManager productsCache = CacheFactory.GetCacheManager();

string id = "ProductOneId";
string name = "ProductXYName";
int price = 50;

Product product = new Product(id, name, price);

productsCache.Add(product.ProductID, product, CacheItemPriority.Normal, null, new SlidingTime(TimeSpan.FromMinutes(5)));

// Retrieve the item.
product = (Product) productsCache.GetData(id);

例 7.2. Visual Basic .NET

Dim productsCache As CacheManager = CacheFactory.GetCacheManager()

Dim id As String = "ProductOneId"
Dim name As String = "ProductOneName"
Dim price As Integer = 50

Dim newProduct As Product = New Product(id, name, price)

productsCache.Add(newProduct.ProductID, newProduct, CacheItemPriority.Normal, Nothing, New SlidingTime(TimeSpan.FromMinutes(5)))

' Retrieve the item.
product = DirectCast(productsCache.GetData(id), Product)

读者要求

本指南的目的是为了软件架构和软件开发者,要从本指南中得到更多的好处,需要先理解下列技术:

  • Microsoft Visual Studio 2005

  • Microsoft .NET Framework 2.0

Enterprise Library 缓存应用程序块的亮点

Enterprise Library 缓存应用程序块包含下列特性:

  • 可以使用图形工具、命名的 Enterprise Library 配置控制台来管理配置设置。

  • 可以配置一个持久的存储位置,使用独立存储 Enterprise Library 数据访问应用程序块,它的状态与内存内的缓存同步。

  • 可以用创建定制的过期策略和存储位置来扩展应用程序块。

  • 保证应用程序块在线程安全管理器中执行。

系统要求

运行缓存应用程序块的需求如下:

  • Microsoft Windows XP Professional, Windows Server 2003, 或 Windows Vista 操作系统

  • Microsoft .NET Framework 2.0

  • Microsoft Visual Studio 2005 开发系统(任何下列版本):

    • Microsoft Visual Studio 2005 Standard Edition

    • Microsoft Visual Studio 2005 Professional Edition

    • Microsoft Visual Studio 2005 Team Edition for Software Developers

    • Microsoft Visual Studio 2005 Team Edition for Software Testers

    • Microsoft Visual Studio 2005 Team Edition for Software Architects

    • Microsoft Visual Studio 2005 Team Suite

缓存应用程序块依赖

缓存应用程序块依赖于 Enterprise Library 中的其他代码:

核心库功能

Enterprise Library 内核提供了如度量和配置这样的服务,它是一个被所有Enterprise Library 应用程序块所共享的依赖。内核库的功能包含在程序集 Microsoft.Practices.EnterpriseLibrary.Common.dll 中。

ObjectBuilder 子系统

ObjectBuilder 子系统执行所有创建和销毁对象实例的重复和必要的任务,并提供了高度的灵活性。Enterprise Library 将 ObjectBuilder 子系统用于如注入配置到程序块的类中和连接度量类到应用程序块等任务。 ObjectBuilder 子系统被包含在 Microsoft.Practices.ObjectBuilder.dll 程序集中。

数据访问应用程序块

如果使用数据库做为后端存储的话就要用这个应用程序块。

加密应用程序块

如果要加密缓存中的数据的话就要使用这个应用程序块。

修改缓存应用程序块配置设置的推荐方法是使用 Enterprise Library 配置控制台。

缓存应用程序块文档

除了介绍性的材料,文档还包括下列主题:

使用缓存应用程序块开发应用程序

首先解释了如何配置缓存应用程序块并添加到应用程序中。然后解释如果选择后端存储,然后关键场景示范了如何使用应用程序块执行典型的缓存操作。

缓存应用程序块的设计

解释了应用程序块的设计决定和相关决定。

扩展和修改缓存应用程序块

解释了如何添加自己的后端存储和过期策略来扩展应用程序块,也解释了如何修改源码来改变它。

部署和操作

解释了如何部署和更新应用程序块程序集。

快速入门

解释了如何安装和配置快速入门应用程序,并包含一系列示范了如何合并普通缓存操作到应用程序的教程。

更多信息

更多信息,请参见下列的模式与实践指南:

posted @ 2007-10-23 21:16  Dorian Deng  阅读(788)  评论(2编辑  收藏  举报