Welcome

首页 / 软件开发 / .NET编程技术 / IsLine FrameWork系列之十一--HttpContentProvider访问缓存

IsLine FrameWork系列之十一--HttpContentProvider访问缓存2011-03-06 博客园 缘清今天我们来介绍 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,缓存中的项可依赖于表中的某一行。