.Net PetShop 4.0的缓存处理

在访问量非常大,但更新较少的网站中使用缓存,可以大大提高程序运行的效率,给网络用户一个良好的体验效果。在Microsoft提供的经典示例项目.Net PetShop 4.0中,也提供了对缓存的支持,本文是作者在学习此项目时的一些心得体会,有一些地方还不十分清楚,希望能够抛砖引玉。

在.Net PetShop 4.0中,非常成功地使用了工厂模式以及接口(interface)、静态类(Static class)、抽象类(abstract class)等成员。在使用缓存时,也是通过web.config配置进行设置,在使用时非常灵活。下面从底向上具体分析.Net PetShop 4.0缓存方面的技术。

首先看一下该项目中与缓存直接相关的命名空间:

PetShop.ICacheDependency
PetShop.TableCacheDependency
PetShop.CacheDependencyFactory
PetShop.Web

一、PetShop.ICacheDependency命名空间

最低层应该是接口的定义了,在PetShop.ICacheDependency命名空间中只定义了一个接口IPetShopCacheDependency,该接口只有一个方法 GetDependency,没有任何参数,返回AggregateCacheDependency类型。AggregateCacheDependency是在.NET Framework 2.0 版中是新增的类,组合 ASP.NET 应用程序的 Cache 对象中存储的项和 CacheDependency 对象的数组之间的多个依赖项(MSDN中原话)。

二、PetShop.TableCacheDependency命名空间

在PetShop.TableCacheDependency命名空间中,提供两种类:抽象类TableDependency和它的继承类Category、Item和Product。抽象类TableDependency的构造函数为:

protected TableDependency(string configKey) {    string dbName = ConfigurationManager.AppSettings["CacheDatabaseName"];    string tableConfig = ConfigurationManager.AppSettings[configKey];    string[] tables = tableConfig.Split(configurationSeparator);    foreach (string tableName in tables)        dependency.Add(new SqlCacheDependency(dbName, tableName));}

传递了一个参数configKey,根据该参数从web.config文件中获取表名列表,同时在web.config中获取数据库名称。将表名列表中的所有数据表添加到AggregateCacheDependency类型的dependency变量中。在此外使用了.NET Framework 2.0 版中是新增的另一个与缓存有关的SqlCacheDependency类。这个类用于建立ASP.NET应用程序的Cache对象中存储的项和特定SQL Server数据库表之间的联系。AggregateCacheDependency和SqlCacheDependency都从CacheDependency继承而来,但在.NET 2.0中还未提供Oracle等其它数据库对应的类。

下面是web.config文件中与缓存相关的设置:

<!-- Cache dependency options. Possible values: PetShop.TableCacheDependency for SQL Server and keep empty for ORACLE -->
<add key="CacheDependencyAssembly" value="PetShop.TableCacheDependency"/>
<!-- CacheDatabaseName should match the name under caching section, when using TableCacheDependency -->
<add key="CacheDatabaseName" value="MSPetShop4"/>
<!-- *TableDependency lists table dependency for each instance separated by comma -->
<add key="CategoryTableDependency" value="Category"/>
<add key="ProductTableDependency" value="Product,Category"/>
<add key="ItemTableDependency" value="Product,Category,Item"/>

每个继承类都只有一个构造函数,通过设置基类的configKey参数变成了三个不同的类。Product类的构造函数为:

public Product() : base("ProductTableDependency") { }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, 缓存
, petshop
, 一个
SqlCacheDependency
petshop4.0、petshop4.0 官方下载、petshop4.0 下载、petshop4.0详解、asp.net petshop,以便于您获取更多的相关知识。

时间: 2024-10-03 07:40:07

.Net PetShop 4.0的缓存处理的相关文章

《解剖PetShop》之四:PetShop之ASP.NET缓存_自学过程

四 PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术.因为Cache的存取速度比内存快,因而引入Cache能够有效的解决CPU与内存之间的速度不匹配问题.硬件系统可以利用Cache存储CPU访问概率高的那些数据,当CPU需要访问这些数据时,可以直接从Cache中读取,而不必访问存取速度相对较慢的内存,从而提高了CPU的工作效率.软件设计借鉴了硬件设

PetShop之ASP.NET缓存设计

PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术.因为Cache的存取速度比内存快,因而引入Cache能够有效的解决CPU与内存之间的速度不匹配问题.硬件系统可以利用Cache存储CPU访问概率高的那些数据,当CPU需要访问这些数据时,可以直接从Cache中读取,而不必访问存取速度相对较慢的内存,从而提高了CPU的工作效率.软件设计借鉴了硬件设计中

ASP.NET 2.0的缓存技术简介

asp.net|缓存 由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.用户从数据库中检索数据,可能是Web应用程序中执行最慢的操作之一.因为其中涉及多个环节,例如,Web服务器.数据库服务器等.尤其是在用户比较多,检索的数据量比较大的情况下,会给包括用户在内的各个方面造成不小的困难.如果能够将数据库中的数据缓存到内存(也可以存储在其他场所),则无需在请求每个页面时都访问数据库.由于从内存中返回数据的速度始终比新提供的数据速度快,因而可以大大提供应用程序的性能. 缓存有

ASP.NET 2.0的缓存技术

asp.net|缓存      由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.用户从数据库中检索数据,可能是Web应用程序中执行最慢的操作之一.因为其中涉及多个环节,例如,Web服务器.数据库服务器等.尤其是在用户比较多,检索的数据量比较大的情况下,会给包括用户在内的各个方面造成不小的困难.如果能够将数据库中的数据缓存到内存(也可以存储在其他场所),则无需在请求每个页面时都访问数据库.由于从内存中返回数据的速度始终比新提供的数据速度快,因而可以大大提供应用程序的性能

.Net PetShop 4.0的配置文件属性管理

.NET 2.0中,提供了ASP.NET成员资格管理.ASP.NET角色管理以及ASP.NET配置文件属性等功能.在本文中,重点探讨.Net PetShop 4.0配置文件属性管理的设计与实现. 配置文件属性用于给用户提供个性化的服务.在.Net PetShop 4.0中,与配置文件属性直接相同的命名空间如下: PetShop.IProfileDAL PetShop.OracleProfileDAL PetShop.SQLProfileDAL PetShop.ProfileDALFactory

.Net PetShop 4.0的消息处理

.Net PetShop 4.0对订单的处理提供了两种方式以供选择,一种是同步处理,一种是异步处理.同步处理就不再多说了,使用普通的数据库存取方式:异步处理便是采用消息处理方式. MSDN中介绍说利用消息队列,应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信.消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法.具体来说,当数据库出现短时异常时,利用消息处理方式,可以对已提交的消息进行恢复,提高系统的可靠性. 下面重点来探讨.Net PetShop 4.

ASP.NET2.0的缓存控件和地址映射

asp.net|缓存|控件 今年,微软终于发布了.net framework 2.0 beta 以及一系列的开发工具的beta 测试版,其中包括visual web developer 2005系列(可以在http://www.asp.net上下载).在asp.net 2.0中,引入了很多新的控件和功能,比起之前的asp.net 1.0 和asp.net 1.1,有了革命性的改变.本文将简单介绍其中的两个新的功能:缓存功能和地址映射功能.本文以.net framework 2.0 和visual

ASP.NET 2.0数据缓存功能简介

asp.net|缓存|数据 在ASP.NET 2.0,新增加了不少新的功能和控件.其中,在数据的缓存功能,比asp.net 1.1有了很大的改变.众所周知,数据的缓存功能是十分重要的,我们可以把一些在相对一段时间内不发生改变的数据放在缓存中,这样,就不必要每次去读取数据库,当下次再需要这些数据时,可以直接从缓存中取得,大大增强了效率. 而在asp.net 1.1 中,已经比较好地实现了数据的缓存功能,但有一个小问题,那就是如果数据库中的数据发生了变化,缓存不能在指定的时间内更新,而必须等到缓存失

ASP.NET 2.0的缓存控件和地址映射

在asp.net 2.0中,引入了很多新的控件和功能 ,比起之前的asp.net 1.0 和asp.net 1.1,有了革命性的改变.本文将简单介 绍其中的两个新的功能:缓存功能和地址映射功能.本文以.net framework 2.0 和visual web developer 2005 beta 为工具,介绍这两个新增的功能. 一 Substitution缓存控件 在asp.net 2.0之前的.net 版本中,可以引入缓存功能,将大大增强应用程 序的性能.但唯一不足的是,一旦使用缓存功能的