ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

今天我们来介绍 IsLine.HttpContent.HttpContentProvider命名空间:

  这个Provider主要封装了对缓存、Session与Cooike的操作,该空间下主要有三个类:CookieProvider、SessionProvider、CacheProvider。

  关于约束

  这三个类库统一实现ICapability接口,ICapability继承自IBaseCapability接口,IBaseCapability规范了HttpContentProvider的基础能力,而ICapability则是对基础能力的扩展,如下:

 

复制代码
ExpandedBlockStart.gif 代码
 
  
namespace IsLine.HttpContent.HttpContentProvider

{

public interface IBaseCapability

{

bool Remove( string Name);

bool IsExit( string Name);

}

public interface ICapability : IBaseCapability

{

object GetContent( string Name);

bool UpdateContent( string Name, object value);

}

}

复制代码

 

  可以看出,接口主要约束了如何删除、获得与更新一个对象,即约束了Session、Cookie、Cache的行为。

  CacheProvider类

  首先来看看有关Cache的操作,CacheProvider支持.Net两种类型的Cache:运行时Cache(HttpRuntime.Cache)与上下文Cache(HttpContext.Current.Cache),这两种Cache有什么区别呢?这里简单的解释一下:

  HttpRuntime.Cache是Application级别的,而HttpContext.Current.Cache是仅对当前WEB页面请求才有效的。换句话说,HttpRuntime Cache所有的web与非web程序都可以调用,而HttpContext则只能用在WEB中。

  缓存中的数据是易失的,数据并不是在整个应用程序生命周期中都存储在内存中,由 ASP.NET 管理缓存,它会在项过期、无效、或内存不足时移除缓存中的项。还可以配置应用程序缓存,以便在移除项时通知应用程序。所以,你并不知道缓存在什么时候会失效,即使你已经配置了依赖项。

  关于缓存的过期有2种类型:

过期类型

说明

滑动窗口

指定某项自上次被访问后多长时间过期。

绝对过期

指定某项在设定的时间过期,而不考虑访问频率。

    可以将缓存中某一项的生存期配置为依赖于其他应用程序元素,如某个文件或数据库。当缓存项依赖的元素更改时,ASP.NET 将从缓存中移除该项。

CacheProvider类支持以下2种依赖:

说明

文件依赖项

缓存中的项依赖于外部文件。如果该文件被修改或删除,则缓存项也会被移除。

SQL 依赖项

缓存中的项依赖于 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 数据库中表的更改。对于 SQL Server 2005,缓存中的项可依赖于表中的某一行。

 

  使用CacheProvider中的方法

方法

说明

CacheProvider()

构造函数

CacheProvider(string cacheName)

构造函数,参数指明了需要操作的缓存名称

CacheProvider(CacheType useCacheType, string cacheName, CacheDependencyType cdt,object depend)

构造函数,CacheType指明缓存类型,可以是运行时或上下文Cache,默认为运行时Cache;cacheName为需要操作的缓存名称;CacheDependencyType为依赖项类型,可以是sql或文件;

depend为具体依赖项

Object GetContent()

获得默认缓存内容

Object GetContent(string Name)

获得缓存内容,参数指明了需要操作的缓存名称

Bool UpdateContent(object o)

更新或新建默认缓存内容

Bool UpdateContent(string Name,object o)

更新或新建缓存内容,参数指明了需要操作的缓存名称

bool Remove()

移除默认缓存

bool Remove(string Name)

移除缓存,参数指明了需要操作的缓存名称

bool IsExit()

判断默认缓存是否存在

bool IsExit(string Name)

判断缓存是否存在,参数指明了需要操作的缓存名称

 

    缓存依赖项可以以参数方式统一传入,这样方便了开发人员。SQL缓存只针对SQL SERVER数据库有效,指定使用文件缓存还是数据库缓存,可以通过CacheDependencyType参数达到目的,CacheDependencyType是一个枚举值,在IsLine.HttpContent.HCDataTypeEnum命名空间下,IsLine.HttpContent.HCDataTypeEnum命名空间:

 

复制代码
ExpandedBlockStart.gif 代码
 
  
namespace IsLine.HttpContent.HCDataTypeEnum

{

public enum DateType

{

Days,

Hours,

Years,

Minutes

}


public enum CacheType

{

HttpRuntime,

HttpContext

}



public enum CacheDependencyType

{

Sql,

File,

None

}



public enum RemoveType

{

RemoveInput,

RemoveAllExcludeInput

}

}

复制代码

 

 

    需要注意的是,即使使用CacheProvider(string cacheName)指明了需要操作的Cache,但是如果后面的代码中,实例调用的方法中包含其他Cache的名称,那么以后使用不带Cache名称参数的方法时,将会操作那个新的Cache,而忽略构造函数中指明的Cache。

例如:

复制代码
 
 
CacheProvider cp = new CacheProvider(“A”);

cp.GetContent();
// 这一步将获得Cache“A”的内容

cp.IsExit(“B”)
// 这一步检测Cache“B”是否存在

cp.GetContent();
// 这一步将获得Cache“B”的内容,而不是构造函数中的Cahce“A”
复制代码

 本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2010/01/29/1659066.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
存储 缓存 NoSQL
后端开发中的缓存策略:提升应用性能的关键
后端开发中的缓存策略:提升应用性能的关键
24 0
|
21天前
|
存储 XML 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南(一)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南
42 0
|
21天前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
26 1
|
3月前
|
缓存 人工智能 算法
【实测】gpt做底层:在开发过程中应对gpt的结果先做mock缓存再继续调试开发
【实测】gpt做底层:在开发过程中应对gpt的结果先做mock缓存再继续调试开发
|
4月前
|
存储 SQL 开发框架
国产化之路 Linux Mono下的asp.net 开发笔记(三)
国产化之路 Linux Mono下的asp.net 开发笔记(三)
|
4月前
|
存储 SQL 开发框架
国产化之路 Linux Mono下的asp.net 开发笔记(二)
国产化之路 Linux Mono下的asp.net 开发笔记(二)
|
4月前
|
存储 开发框架 .NET
国产化之路 Linux Mono下的asp.net 开发笔记(一)
国产化之路 Linux Mono下的asp.net 开发笔记(一)
|
4月前
|
缓存 NoSQL Java
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
48 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
6月前
|
开发框架 .NET 数据库
asp.net企业费用报销管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
asp.net 企业费用报销管理信息系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使 用c#语言开发 应用技术:asp.net c#+sqlserver 开发工具:vs2010 +sqlserver
49 0

相关实验场景

更多