当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net中SqlCacheDependency缓存技术概述

asp.net中SqlCacheDependency缓存技术概述

2017年12月12日  | 移动技术网IT编程  | 我要评论
本文实例讲述了asp.net中sqlcachedependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下: 对于访问量大,但更新较少的网站中使用

本文实例讲述了asp.net中sqlcachedependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下:

对于访问量大,但更新较少的网站中使用缓存技术,可以大大提高运行效率;加上.net 2.0提供的缓存依赖机制,我们可以很方便的对缓存进行管理更新;以下是本人学习的一点心得体会,希望能够起到抛砖引玉的作用。

建立缓存依赖,实现代码如下:

/**//// <summary> 
/// 建立缓存依赖项 
/// </summary> 
/// <returns></returns> 
private aggregatecachedependency tabledependency() 
{ 
aggregatecachedependency dependency = new aggregatecachedependency(); 
dependency.add(new sqlcachedependency("mspetshop4", "表名称")); 

return dependency; 
} 

一个非常简单的方法,首先我们先看看两个.net 2.0新增的两个类:

aggregatecachedependency在system.web.caching命名空间中,aggregatecachedependency主要作用是用于组合 asp.net 应用程序的 cache 对象中存储的项和 cachedependency 对象的数组之间的多个依赖项。

sqlcachedependency也存在于system.web.caching命名空间中,这个类用于建立asp.net应用程序的cache对象中存储的项和特定sql server数据库表之间的联系。

sqlcachedependency是如何建立cache对象中存储的项和特定sql server数据库表之间的联系的呢?看一下web.config配置文件就一目了然了。

<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.netconfiguration/v2.0"> 
<connectionstrings> 
<add name="localconnstring" connectionstring="server=(local);uid=sa;pwd=123456;database=mspetshop4"/> 
</connectionstrings> 
<system.web> 
<caching> 
<sqlcachedependency enabled="true" polltime="10000"> 
<databases> 
<add name="mspetshop4" connectionstringname="localconnstring" polltime="10000"/> 
</databases> 
</sqlcachedependency> 
</caching> 
<compilation debug="true"/> 
</system.web> 
</configuration> 

配置节<databases><add name="mspetshop4" connectionstringname="localconnstring" polltime="10000"/></databases>中配置了数据库信息,sqlcachedependency类会自动完成对此配置节信息的读取以建立和数据库之间的联系。(注意)name="mspetshop4"必须和new sqlcachedependency("mspetshop4", "表名称")中的数据库名称相一致。更多的配置信息可以查看(msdn帮助文档)。

使数据库支持sqlcachedependency特性:

要使得7.0或者2000版本的sql server支持sqlcachedependency特性,需要对数据库服务器执行相关的配置步骤。有两种方法配置sql server:

使用aspnet_regsql命令行工具,或者使用sqlcachedependencyadmin类。

aspnet_regsql工具位于windows\microsoft.net\framework\[版本]文件夹中,如果要配置sqlcachedependency,则需要以命令行的方式执行。

以下是该工具的命令参数说明:

-? 显示该工具的帮助功能; 
-s 后接的参数为数据库服务器的名称或者ip地址; 
-u 后接的参数为数据库的登陆用户名; 
-p 后接的参数为数据库的登陆密码; 
-e 当使用windows集成验证时,使用该功能; 
-d 后接参数为对哪一个数据库采用sqlcachedependency功能; 
-t 后接参数为对哪一个表采用sqlcachedependency功能; 
-ed 允许对数据库使用sqlcachedependency功能; 
-dd 禁止对数据库采用sqlcachedependency功能; 
-et 允许对数据表采用sqlcachedependency功能; 
-dt 禁止对数据表采用sqlcachedependency功能; 
-lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。

比如在petshop4.0的数据库中使用sqlcachedependency特性:aspnet_regsql -s localhost -e -d mspetshop4 -ed 
以上面的命令为例,说明将对名为mspetshop4的数据库采用sqlcachedependency功能,且sql server采用了windows集成验证方式。我们还可以对相关的数据表执行aspnet_regsql命令,如:

aspnet_regsql -s localhost -e -d mspetshop4 -t item -et 
aspnet_regsql -s localhost -e -d mspetshop4 -t product -et 
aspnet_regsql -s localhost -e -d mspetshop4 -t category -et

最后为使用缓存:

protected void page_load(object sender, eventargs e) 
{ 
if (!ispostback) 
{ 
string key = "tablecache"; //缓存名称 
dataset data = (dataset)httpruntime.cache[key]; //获取缓存 

// 判断缓存数据为空 
if (data == null) 
{ 
// 获取数据 
data = getdatasource(); 

// 创建缓存依赖 
aggregatecachedependency cd = tabledependency(); 

// 创建缓存 
httpruntime.cache.add(key, data, cd, datetime.now.addhours(1), cache.noslidingexpiration, 

cacheitempriority.high, null); 
} 

gridview1.datasource = data; //绑定数据 
gridview1.databind(); 
} 
} 

获取数据源的方法,结合实际使用做修改。

private dataset getdatasource() 
{ 
string connectionstringlocal = configurationmanager.connectionstrings["localconnstring"].connectionstring; 
sqlconnection connpubs = new sqlconnection(connectionstringlocal); 
sqldataadapter dad = new sqldataadapter("select top 50 * from product", connpubs); 
dataset ds = new dataset(); 
dad.fill(ds); 
return ds; 
}

希望本文所述缓存技术对大家asp.net程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网