网站大量收购闲置独家精品文档,联系QQ:2885784924

《面向服务的计算和web数据管理》课件第5章.ppt

《面向服务的计算和web数据管理》课件第5章.ppt

  1. 1、本文档共240页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

在编码层,我们可以使用不同的机制保存对象,可以使用应用状态变量作为缓存,应用状态存储的任何对象在所有会话中都可引用。但是,试图以应用状态变量作为高速缓存的错误在哪里呢?这里存在好几个问题:我们必须清楚内存大小。我们必须手工更新列表并删除旧表。最后当更新缓存数据时,我们必须管理线程并锁定对象。ASP.Net提供缓存类的名字空间,能自动执行需要缓存的任务,它允许我们执行以下任务:

①使用应用状态语法:Cache[“indexkey”]=object,这种方法很容易使用;

②自动过期:对不经常使用的项,自动让它相对或绝对过期;

③定义缓存项和其他项的依赖关系;

④自动回调:给缓存项添加事件处理程序,当该项从缓存中删除时,就调用事件处理程序,这样我们就有机会更新缓存或者不删除某项;⑤自动管理线程避免冲突。

下面详细讨论缓存类中的两个类:

(1)Cache类:我们需要创建缓存类的对象来缓存数据。当在一个会话中创建缓存类的实例后,这个实例将:

①被应用中的所有会话共享;

②应用激活的整个时段内都是可用的。

(2)CacheDependency类:当我们把一个对象加入到缓存对象中,它定义了某一参数类型。CacheDependency类可以:

①建立添加到缓存中的项(对象)和其他元素的依赖关系,其他元素可以是文件、缓存码、数组或者另一个CacheDependency对象。

②监控依赖关系,一旦关系改变,缓存项就会被自动移除。

我们首先讨论Cache类,这个类定义了支持缓存操作的几个方法:

(1)Add:给已存在的缓存对象添加指定项,如依赖、过期、优先级以及回调代理,回调代理的作用是当缓存中的项被移除时,向应用发出通知。

(2)Remove:从应用的缓存对象中移除指定项。

(3)Get:从缓存对象中恢复指定项。(4)GetType:获取当前实例的类型(从Object继承)。

(5)ToString:将当前对象转化成字符串(从Object继承)。

(6)Insert:向缓存插入新数据对象,它是创建缓存的主要方法。下面定义了5种重载方法,它们应用不同的参数列表,满足向缓存中插入新数据的不同需求。

①Insert(String,Object);这个操作支持不同状态管理机制的不同语法,例如会话状态和应用状态:Cache[“indexkey”]=item;

②Insert(String,Object,CacheDependency);③Insert(String,Object,CacheDependency,DateTime,TimeSpan);

④Insert(String,Object,CacheDependency,DateTime,TimeSpan,CacheItemUpdateCallback);

⑤Insert(String,Object,CacheDependency,DateTime,TimeSpan,CacheItemPriority,CacheItemRemovedCallback)。表5.4是对insert方法中各个参数的说明。正如表中所述,CacheDependency类定义了insert方法的一个参数。这个类定义了缓存对象中的项和文件、缓存码、数组或另一个CacheDependency对象之间的依赖关系,这个依赖关系可以包含在insert()方法中,也可以用Add()方法进行添加。CacheDependency类监视依赖关系,所以一旦依赖关系有所改变,缓存项将被自动移除。如果不想定义依赖关系可以使用null方法。下面举几个例子说明类及方法的使用。下面代码缓存两个数据项:“DellPrinter1710”和“CartridgeforPrinter1710”,如果移除“DellPrinter1710”,缓存项“CartridgeforPrinter1710”将会被自动移除。

protectedvoidbtnAddBook_Click(objectsender,EventArgse){//createtwocacheitems

stringitem1=DellPrinter1710;stringitem2=CartridgeforPrinter1710;

Cache.Insert(PrinterKey,item1,null,DateTime.Now.AddMinutes(10),

TimeSpan.Zero,CacheItemPriority.Default,CacheRemovedCallBack);

Cache.Insert(CartridgeKey,item2

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档