您的位置:首页 > 其它

Enterprise Library Step By Step系列(九):缓冲应用程序块——入门篇

2008-01-18 17:23 513 查看
一.缓存应用程序块概述:

企业库缓冲应用程序块提供了一些方便易用的,可扩展的缓冲机制,可让开发人员将本地缓存集成到其应用程序中。它支持内存缓存和后备存储(可选),后者可以是企业程序库数据访问应用程序块或独立存储方式(Isolated Storage

)。应用程序块无需修改即可使用,它还可以提供检索、添加和删除缓存数据所需的全部功能。可配置的过期时间与清除策略也是应用程序块的一部分功能。

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

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

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

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

适用的情况:

(1)必须重复访问静态数据或极少更改的数据

(2)在创建、访问或传输方面,数据访问的开销很高

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

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

Windows 窗体

控制台

Windows 服务

企业服务

ASP.NET Web 应用程序或 Web 服务

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

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

二.缓冲存储:

缓冲存储分为内存驻留型缓冲和磁盘驻留型缓冲。

1.内存驻留型缓冲:

内存驻留型缓冲的典型应用:

应用程序经常使用同样的数据

一个应用程序经常需要重新获得数据

2.磁盘驻留型缓冲:

磁盘驻留型缓冲的典型应用:

数据量比较大

同时,从应用服务提供商(例如数据库)重新获取数据,开销比较大

在缓冲的生命周期中,必须经历系统的重新启动

三.缓冲的典型使用步骤:

在开始介绍使用之前,我们同样认为您已经拥有了一个项目和App.config配置文件。

1.运行企业库配置工具,打开项目配置文件(Web.config或App.config),创建一个Cache Application Block。

2.选择Application | Caching Application Block | Cache Managers | Cache Manager,这时我们可以看到几个参数:

ExpirationPollFrequencyInSecond:指过期轮询周期,就是多长时间就检查一下有哪些缓存项过期了,由后台独立进程执行。这个参数很关键,如果时间设置的太短,就会使这个后台进程不断执行,占用大量CPU时间,如果太长,又会浪费内存,要找个不长不短的,推荐用性能计数器监测一下,选一个适中的参数。

MaximumElementsLnCacheBeforeScavenging:缓冲中的最大元素数量。

Name:Cache Manage的名字,可以常见多个Cache Manage,以使用不同的缓冲策略。

NumberToRemoveWhenScavenging:一次移除的数量。

其中2,4两个参数,我会在进阶篇中介绍清除时重点讲一下。

copy "$(ProjectDir)\*.config" "$(TargetDir)"

5.添加引用。

1using Microsoft.Practices.EnterpriseLibrary.Caching;

2using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;

3using Microsoft.Practices.EnterpriseLibrary.Data;

6.添加缓存项。

1 Database db = DatabaseFactory.CreateDatabase("Database Instance");

3 IDataReader dr = db.ExecuteReader(CommandType.Text,"Select * from Products");

4

5 this.myDr=dr;

6

7 CacheManager myCacheManager = CacheFactory.GetCacheManager();

9

10 myCacheManager.Add("MyDataReader",this.myDr);

7.读取缓存项。

在读取一个缓存项的时候,我们有两点要特别注意:

(1)在读取时类型一定要正确,因为在加入缓冲项时类型是由我们自己定的,所以读取时的类型我们自己也知道;

(2)在读取时一定要检查是否为空值,切记!

1 IDataReader toBeDisplay = (IDataReader)myCacheManager.GetData("MyDataReader");

3

4 if(toBeDisplay != null)

6 myCacheManager.Remove("FileKey");
结束语:关于缓存应用程序块的入门篇介绍就到这里,希望初学的朋友有所帮助。在进阶篇中会介绍基于时间的过期策略和基于提醒机制的过期策略;缓冲存储的加密;条目的移除;装载缓冲;刷新缓冲等内容,希望大家关注。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐