.NET缓存初步

ZDNet软件频道 时间:2002-04-11 作者:ZDNET CHINA 特稿 |  我要评论()
本文关键词:CACHE
.NET的cache类可以为微软输出工具箱增加许多典型的缓存功能。本文中,我主要解释一下如何构造cache,同时解释一下在必要时如何构造属于自己的cache。

.NET的CACHE类可以为微软输出工具箱增加许多典型的缓存功能。在很多开发细节中,CACHE类可以节约时间,当然它也有很多缺点,比如,要限制一些关键字类型。但是,如果使用得当,它还是可以节约时间。本文中,我主要解释一下如何构造CACHE,同时,解释一下在必要时如何构造属于自己的CACHE

CACHE基本知识

CACHE是用来存储常用信息的高速存储器,使用CACHE的目的就是要提高系统性能。比如,要开发ASP.NET应用软件以实现许多用户所要求的相同产品列表功能,就要用到CACHE来存储产品列表。这样可以防止你重复从数据库中读取信息,否则就要降低系统速度、降低性能。

.NET工具箱外caching

.NET中有一个CACHE类,位于系统Web caching中,ASP.NET中每一个Web Form object都有一个叫做System.Web.Caching.CACHECACHE,这是一个叫做item的默认参数化设置。Item会接收很多参数已确定对象已被插入或提出。问题的关键是确定了CACHE数据。在下面的例子中,关键值“Alphabet”定义了一个可以放在CACHE中的长量。利用关键值可以从CACHE中恢复长量。

在这种情况下,记住MyClass代表Web Form object

就象例子中看到的那样,CACHE object有item特性。这一特性是object的默认性质,因此在代码中可以省略。但是这种情况是还存在一定危险性。Click here可以看到代码中的一些默认设置。

如果想要选取捷径,可以减少代码:

MyClass.CACHE(“Alphabet”) = s

编辑器认为这些代码都是默认值设置,也就是值为“default”。

一旦这些长量放到CACHE中,就可以得到下面的值:

s = MyClass.CACHE (“Alphabet”)

如果想用Web Form外面的值,就可以设置一个新的CACHE对象,如果正在使用Visual Studio.NET的RTM 版本(Manufacturing 或 Commercial Release),可以用下面的设置:

c = new System.Web.Caching.CACHE()

创建完CACHE之后,就可以使用insert或add命令为其设值,当然,也可以利用get命令从CACHE中恢复对象。

创建自己的CACHE

也许你担心使用微软的CACHE会降低系统性能,或者你需要某一关键类型的CACHE而不是一个长量。(这一限制是System.Web.Caching object的一个缺陷),或者你只是出于好奇想做个试验。

不管什么原因,你就是想创建自己的.NET CACHE。首先来看看如何创建最基本的、能够存储某些值的CACHE。在下面的部分里,将要解释一些最基本的CACHE,同时清除一些不必要的功能。

要创建自己的CACHE,首先要了解一下HashTable object。HashTable是System.Collections namespace中的一个collections对象,从概念上来理解,object就像是一个档案柜,你可以把object放在档案柜中,同时也可以按类别把它们重新恢复回来。Hashtable object允许object插入和恢复。

现在可以定义一个名为CustomCACHE的新的类,采用HashTable来存储objects并把它放到CACHE中,CustomCACHE有两种方式:名为insertCACHEdObject的子程序和名为getCACHEdObject的函数。插入法可以有两个参数:key和object,getCACHEdObject却只能有一个参数:key(见Listing A)。

CustomCACHE object中定义了表A所要求的代码:创建CustomCACHE object并优先使用它。如果只想创建单一模式的CACHE,也就是所有的代码都能采用同一CACHE,那么就可以改变Listing B中的object。

注意Listing B中在Hashtable前增加共享关键字,比如增加一些方法和构造器。可以增加第二个private构造器来防止代码创建CustomCACHE object。现在所有的代码都共享一个HashTable类而无需创建一个CustomCACHE。就像Java中静态关键字一样,共享关键字也发挥同样的功能,.NET中的共享构造器与Java中的静态模块一样。

Listing C中的例子是一个采用CustomCACHE来存储和恢复长Alphabet量的程序。

现在一个简单的CACHE已经完成了。它不能提供在一段时间后自动终止item的功能,同时它也不能实现跟踪最近使用的objects、caching以及其他使用数据,但是这只是一个起点。在以后的文章中,我们会进一步讨论这一问题以及.NET其它的CACHE功能。

责任编辑:超凡

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134