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

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

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

关于约束

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

代码

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命名空间:

代码

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”

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

  1. ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)

    ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下) 接上文 对文件系统的操作: 对于文件目前内置3中支持对象:XML.TEXT.CONFIG ...

  2. ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)

    ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中) 接上文 使用DataProvider前,需要先在web.config中配置以下节点,添加 ...

  3. ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)

    ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上) 接上文 DataProvider是日常编程中最常用的Provider,它为项目提供了与数 ...

  4. ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下)

    ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下) 接上文   三.IsLine.ExceptionProcess 部分 这部分主要管理异常,对异常的管理分 ...

  5. ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中)

    ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中) 接上文 上文中讲到配置日志模块的第二步,这篇文章继续给大家介绍日志配置方法. Step 3.在</ ...

  6. ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上)

    ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上) IsLine FrameWork一个是支持企业应用系统开发的框架,开发人员可以在其基础上对企业所需的应用 ...

  7. ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持

    ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session.Cookie与安全支持 今天来介绍IsLine.HttpContent.HttpContentProvide ...

  8. ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下)

    ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下) 接上文       异常展示 系统异常模块除了记录功能,还有一个很 ...

  9. ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)

    ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上) 接上文 IsLine.ExceptionProcess.Excep ...

最新文章

  1. nginx利用referer指令实现防盗链配置
  2. Scala主构造方法和辅助构造方法
  3. android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)
  4. 7-207 排序 (25 分)
  5. C++中STL-vector的用法
  6. xcode6新建pch文件过程
  7. raise NotImplementedError
  8. android获取组件id,Android 获取控件id的三种方式
  9. Linux系统firewalld防火墙的应用实操(禁止屏蔽海外国外IP访问)
  10. JS设计模式书籍、原则
  11. Hexo/Github.io 配置腾讯云CDN
  12. Unity3D 《拥挤城市》3D房子建筑透视效果实现
  13. 写作活动第三期!让我们再挣200元稿费吧!
  14. 当 Python 遇到数据库,这个模块就变得超级好用
  15. 轻量级容器主机 Photon OS
  16. visudo精确用户赋权与sudo日志跟踪
  17. AC695x学习笔记(5):空间问题
  18. matplotlib 关于使用 MultipleLocator 自定义刻度间隔
  19. 在GSYVideoPlayer中实现VLC 内核
  20. Kafka穿过网闸(物理层)进行消费

热门文章

  1. lower_bound
  2. 答网友:如何在Sbo Add-on中激活或者禁止系统增加、查找和导航按钮?
  3. 面试官系统精讲Java源码及大厂真题 - 38 线程池源码面试题
  4. Spring Boot Initilizr - 使用IDE或IDE插件
  5. Spring MVC 安全示例
  6. 看完这篇你们团队的代码也很规范
  7. C#LeetCode刷题之#896-单调数列(Monotonic Array)
  8. there are so many javascript library
  9. java-log入门【目的把日志写入socket】
  10. react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库