ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存
ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存
今天我们来介绍 IsLine.HttpContent.HttpContentProvider命名空间:
这个Provider主要封装了对缓存、Session与Cooike的操作,该空间下主要有三个类:CookieProvider、SessionProvider、CacheProvider。
关于约束
这三个类库统一实现ICapability接口,ICapability继承自IBaseCapability接口,IBaseCapability规范了HttpContentProvider的基础能力,而ICapability则是对基础能力的扩展,如下:
代码
可以看出,接口主要约束了如何删除、获得与更新一个对象,即约束了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命名空间:
代码
需要注意的是,即使使用CacheProvider(string cacheName)指明了需要操作的Cache,但是如果后面的代码中,实例调用的方法中包含其他Cache的名称,那么以后使用不带Cache名称参数的方法时,将会操作那个新的Cache,而忽略构造函数中指明的Cache。
例如:
ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存相关推荐
- ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下) 接上文 对文件系统的操作: 对于文件目前内置3中支持对象:XML.TEXT.CONFIG ...
- ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)
ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中) 接上文 使用DataProvider前,需要先在web.config中配置以下节点,添加 ...
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上) 接上文 DataProvider是日常编程中最常用的Provider,它为项目提供了与数 ...
- ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下)
ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下) 接上文 三.IsLine.ExceptionProcess 部分 这部分主要管理异常,对异常的管理分 ...
- ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中)
ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中) 接上文 上文中讲到配置日志模块的第二步,这篇文章继续给大家介绍日志配置方法. Step 3.在</ ...
- ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上)
ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上) IsLine FrameWork一个是支持企业应用系统开发的框架,开发人员可以在其基础上对企业所需的应用 ...
- ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持
ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session.Cookie与安全支持 今天来介绍IsLine.HttpContent.HttpContentProvide ...
- ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下)
ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下) 接上文 异常展示 系统异常模块除了记录功能,还有一个很 ...
- ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)
ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上) 接上文 IsLine.ExceptionProcess.Excep ...
最新文章
- nginx利用referer指令实现防盗链配置
- Scala主构造方法和辅助构造方法
- android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)
- 7-207 排序 (25 分)
- C++中STL-vector的用法
- xcode6新建pch文件过程
- raise NotImplementedError
- android获取组件id,Android 获取控件id的三种方式
- Linux系统firewalld防火墙的应用实操(禁止屏蔽海外国外IP访问)
- JS设计模式书籍、原则
- Hexo/Github.io 配置腾讯云CDN
- Unity3D 《拥挤城市》3D房子建筑透视效果实现
- 写作活动第三期!让我们再挣200元稿费吧!
- 当 Python 遇到数据库,这个模块就变得超级好用
- 轻量级容器主机 Photon OS
- visudo精确用户赋权与sudo日志跟踪
- AC695x学习笔记(5):空间问题
- matplotlib 关于使用 MultipleLocator 自定义刻度间隔
- 在GSYVideoPlayer中实现VLC 内核
- Kafka穿过网闸(物理层)进行消费
热门文章
- lower_bound
- 答网友:如何在Sbo Add-on中激活或者禁止系统增加、查找和导航按钮?
- 面试官系统精讲Java源码及大厂真题 - 38 线程池源码面试题
- Spring Boot Initilizr - 使用IDE或IDE插件
- Spring MVC 安全示例
- 看完这篇你们团队的代码也很规范
- C#LeetCode刷题之#896-单调数列(Monotonic Array)
- there are so many javascript library
- java-log入门【目的把日志写入socket】
- react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库