您的位置:首页>软件开发>.NET>

缓存应用程序块

[ 来源:ccidnet | 更新日期:2007-7-15 20:19:32 | 评论 0 条 | 我要投稿 ]
本页概述了企业程序库缓存应用程序块。应用程序块是基于可重用和可扩展的源代码的指导,它简化了基于 .NET 的应用程序中通用缓存功能的开发。

下载

最新版本的缓存应用程序块是 2005 年 1 月发布的 patterns & practices 企业程序库的一部分。要了解并下载企业程序库,请使用以下链接:

? 企业程序库主页

? 下载企业程序库(2005 年 1 月)


企业程序库的使用条款详见最终用户许可协议 (EULA)。

您也可以从 Microsoft 下载中心的缓存应用程序块网页下载缓存应用程序块的早期版本。



本页内容
缓存应用程序块简介
缓存应用程序块的设计
测试驱动
社区
反馈和支持
发展蓝图
作者和参与人员
相关标题

字串1



缓存应用程序块简介
Enterprise Library Caching Application Block 1.0 版可让开发人员将本地缓存集成到其应用程序中。它支持内存缓存和后备存储(可选),后者可以是企业程序库数据访问应用程序块或独立存储。应用程序块无需修改即可使用,它还可以提供检索、添加和删除缓存数据所需的全部功能。可配置的过期时间与清除策略也是应用程序块的一部分功能。

在构建企业级分布式应用程序时,架构师和开发人员面临着许多难题。缓存可以帮助您克服其中的一些难题,包括:

? 性能。通过存储与数据使用者尽可能接近的相关数据,缓存可以提高应用程序的性能。这样可以避免重复进行数据创建、处理和传输。

? 可伸缩性。在缓存中存储信息有助于节省资源,并且可以随着应用程序需求的增加来提高可伸缩性。

? 可用性。通过将数据存储在本地缓存中,应用程序可以承受系统的故障,例如网络等待时间、Web 服务问题以及硬件故障。


常见情况 字串4

缓存应用程序块适用于以下任何一种情况:

? 必须重复访问静态数据或极少更改的数据。

? 在创建、访问或传输方面,数据访问的开销很高。

? 即使在源(例如服务器)不可用时,数据也必须始终可用。


缓存应用程序块可用于以下任何一个应用程序类型:

? Windows 窗体

? 控制台

? Windows 服务

? 企业服务

? ASP.NET Web 应用程序或 Web 服务(如果您需要 ASP.NET 缓存中未包含的功能)


应该将缓存应用程序块部署在单个应用程序域中。每个应用程序域都可以有一个或多个缓存(可以有也可以没有后备存储)。缓存不能在不同的应用程序域之间共享。

缓存应用程序块的性能已优化,并且是线程安全和异常安全的。您可以对它进行扩展,以包括您自己的过期策略和后备存储。

字串6



读者要求

该应用程序块是专为软件架构师和软件开发人员设计的。要充分利用该指导,您应该了解以下技术:

? Microsoft Visual C# 开发工具或 Microsoft Visual Basic 开发系统

? .NET Framework


1.0 版的主要特点

Enterprise Library Caching Application Block 1.0 版包含以下新功能:

? 可以使用图形工具(即,企业程序库配置控制台)来管理配置设置。

? 可以使用独立存储或企业程序库数据访问应用程序块来配置永久存储位置,它的状态与内存缓存同步。

? 可以通过创建自定义过期策略和存储位置来扩展应用程序块。

? 可以获得应用程序块以线程安全的方式执行的担保。


系统要求

字串6


要使用缓存应用程序块来开发应用程序,您需要以下软件:

? Microsoft Windows 2000、Windows XP Professional 或 Windows Server 2003 操作系统

? Microsoft .NET Framework 1.1

? Microsoft Visual Studio .NET 2003


缓存应用程序块依赖于其他应用程序块和企业程序库中包含的代码:

? 配置应用程序块。缓存应用程序块使用该块来读取其配置信息。

? 通用程序库功能。规范就是这样一个示例;它为公开用于系统管理的事件和数据提供各种功能。

? 数据访问应用程序块。如果您要将数据库用作后备存储,则需要该应用程序块。


此外,应用程序块还使用 XML 文件来存储配置信息。修改该信息的推荐方法是使用企业程序库配置控制台。

返回页首
缓存应用程序块的设计

字串4


缓存应用程序块旨在实现以下目标:

? 提供一组大小可以管理的 API

? 允许开发人员将标准的缓存操作集成到其应用程序中,而无需了解应用程序块的内部工作方式

? 可以使用企业程序库配置控制台轻松地进行配置

? 可以高效执行

? 线程安全

? 如果在访问后备存储时发生异常,可以确保后备存储不会受到影响

? 确保内存缓存的状态与后备存储的状态保持同步


设计要点

图 1 展示了缓存应用程序块中关键类的相互关系。



图 1.缓存应用程序块的设计


当使用 CacheFactory 初始化 CacheManager 的实例时,它会在内部创建一个 CacheManagerFactory 对象,而该对象又会创建一个 Cache 对象。创建 Cache 对象后,后备存储中的所有数据就会加载到一个内存表示中,该表示包含在 Cache 对象中。然后,应用程序可以请求 CacheManager 对象检索缓存数据、将数据添加到缓存中,以及从缓存中删除数据。

字串1



当应用程序使用 GetData 方法向 CacheManager 对象发送检索某项的请求时,CacheManager 对象就会将该请求转发给 Cache 对象。如果该项在缓存中,它就会从缓存的内存表示中返回到应用程序。如果它不在缓存中,该请求会返回 NULL。如果该项位于缓存中但已过期,它也会返回 NULL。

当应用程序使用 Add 方法向 CacheManager 对象发送向缓存添加某项的请求时,CacheManager 对象同样会将该请求转发给 Cache 对象。如果已经有一个具有相同关键字的项,则在将新项添加到内存存储和后备存储中之前,Cache 对象会首先删除它。如果后备存储是默认的后备存储 NullBackingStore,则数据只写到内存中。在添加项时,如果缓存项的数量超过预定的限制,那么 BackgroundScheduler 对象就开始进行清理。在添加项时,应用程序可以使用 Add 方法的重载来指定过期策略数组、清除的优先级,以及实现 ICacheItemRefreshAction 接口的对象。还可以使用该对象来刷新缓存中的过期项。

BackgroundScheduler 对象周期性地监视缓存中各项的生存期。当某个项过期时,BackgroundScheduler 对象会首先删除它,然后再通知应用程序该项已被删除(可选)。此时,由应用程序负责刷新缓存。

字串3



返回页首
测试驱动
开发缓存应用程序块的目的是,分析常见的企业开发难题以及提出针对这些难题的成功解决方案。然而,因为每个应用程序都是唯一的,所以您会发现该应用程序块并不适合每个应用程序。为了评估该应用程序块并确定它对您项目的适用性,Microsoft 建议您至少用半天的时间来研究该应用程序块。推荐的评估方法,如下:

1.
下载企业程序库。

2.
安装企业程序库,并编译所有的应用程序块和工具。

3.
阅读文档的“Introduction”和“Scenarios and Goals”部分。

4.
编译并运行快速入门示例,然后通读文档中相关的“QuickStart Walkthroughs”和“Key Scenarios”部分。

5.
如果应用程序块看起来很适合您的应用程序,则尝试使用该应用程序块在您的应用程序或丢弃原型 (throw-away prototype) 应用程序中实现一个简单的用例。
字串8



返回页首
社区
该应用程序块与其他 patterns & practices 产品一样,均可在社区站点上找到相关内容。在此社区站点上,您可以张贴问题、提供反馈或与其他用户联系以分享一些想法。社区成员还可以帮助 Microsoft 设计和测试未来的应用程序块,以及下载其他内容(例如扩展和培训材料)。

返回页首
反馈和支持
您是否有任何问题、意见和建议?要提供有关该应用程序块的反馈,或者要获得针对任何问题的帮助,请访问企业程序库社区站点。该社区站点是首选的反馈和支持渠道,因为它允许您与整个社区分享您的想法、问题和解决方案。您也可以通过 devfdbck@microsoft.com 直接给 Microsoft patterns & practices 小组发送电子邮件,不过也许我们无法回复每封邮件。

企业程序库是一个设计为可以重用、自定义和扩展的指导性产品。它不是 Microsoft 产品。基于代码的指导“按原样”提供,但不对此进行任何担保。客户可以从 Microsoft 支持服务获得付费支持,但是 Microsoft 支持人员会认为该代码是用户编写的。有关支持策略的更多信息,请参见企业程序库主页。 字串9

返回页首
发展蓝图
缓存应用程序块的更新版本是为下一个企业程序库版本设计的。该版本将以 .NET Framework 2.0 和 Visual Studio 2005 为目标。

缓存应用程序块将会被更新,以便与 .NET Framework 2.0 一起使用,并且可能会包含基于客户反馈的其他改进。

返回页首
作者和参与人员
企业程序库缓存应用程序块是由以下人员创作的:

? 项目经理:William Loeffler (Microsoft Corporation),Linh Nguyen (Avanade Inc)

? 产品经理:Tom Hollander (Microsoft Corporation)

? 架构师:Edward Jezierski (Microsoft Corporation),Kyle Huntley (Avanade Inc)

? 开发人员:Scott Densmore、Peter Provost (Microsoft Corporation),Brian Button (Murphy and Associates)

? 测试人员:Mohammad Al-Sabt、Carlos Farre (Microsoft Corporation),Rohit Sharma、Mani Krishnaswami、Prashant Bansode (Infosys Technologies Ltd) 字串4

? 文档与示例编写人员:RoAnn Corbisier (Microsoft Corporation),Tim Osborn (Ascentium Corporation),Roberta Leibovitz (Modeled Computation LLC),Paul Slater (Wadeware LLC),Tina Burden McGrayne (Linda Werner & Associates Inc)


非常感谢以下顾问人员,他们提供了很有价值的帮助:

? Rudy Araujo、Yen-Ming Chen、Mark Curphey 和 David Raphael (Foundstone Inc.)

? Benoit Morneau 和 Shoichi Takasaki (Bowne Global Solutions)


返回页首
相关标题
? 用于 .NET Framework 应用程序的缓存体系结构指南

? 企业程序库


转到原英文页面


Tags:
责任编辑:
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为