加到缓存但没有指定时间段的项的默认缓存持续时间。
DefaultCacheDurationValue
(整数)。指定一个项应该在缓存中存储的时间长度,使用 DefaultCacheDurationUnits 中定义的单位。用作添加到缓存但没有指定时间段的项的默认缓存持续时间。
由于这只是 CacheConfig 类的 1.0 版,所以非常简单。未来的增强功能可能添加对其他类型关键依赖项的支持,例如文件,就像存储当前设置一样在配置中存储文件路径。大部分缓存都缓存来自 Microsoft SQL Server? 的数据,所以基于时间的缓存就足够了(至少到 ASP.NET 的缓存 API 可使用 SQL 表缓存无效的内置支持时为止)。
首次使用
CacheConfig 是个完全静态(在 Microsoft Visual Basic 中是共享的)的类,这意味着它永远不能直接实例化。但是,它的方法可以直接使用。然而,它确实有一个构造函数,每当第一次调用它的某种方法时调用该构造函数。该静态构造函数执行如下任务:
将 CacheSettings 配置节加载到本地 NameValueCollection.
根据配置设置对本地 EnableCaching 变量进行设置。
根据配置设置对本地 RequireKeyDefinition 变量进行设置。
根据配置设置对本地 DefaultCacheDuration TimeSpan 进行设置。
检查 HttpContext(缓存所需)是否可用,如果不可用就把 EnableCaching 设置为 false(在设计时或者从 windows 窗体应用程序调用数据访问层时避免错误)。
当第一次引用 CacheConfig 时,静态构造函数只调用一次。但是,因为所有设置都存储在 web.config 中,所以任何更新都将导致应用程序完全重启,这当然意味着下次调用 CacheConfig 将再次运行静态构造函数并检索最新的值。
基本方法:DeCache
我调用的唯一方法是 DeCache。DeCache为给定的键从缓存请求出一个值。如果缓存中不存在该值,DeCache将使用作为回调函数提供的方法重新填充缓存,并返回该方法的结果。CacheConfig 还可以用于使用 EnCache()方法简单地向缓存添加一个项,但几乎很少使用这个功能。
对于每个要缓存的数据类型,都必须有一个单独的 DeCache 方法。本文提供的 CacheConfig 1.0 版仅支持 DataTable 对象。这可以很容易地进行扩展以包含其他的对象,包括 System.Object(如果期望最终的灵活性超越强类型检查),但这样做需要许多重复代码。一旦 C# 支持通用性,就可以避免许多这种重复代码,希望能产生该工具的新版本。
DeCacheDataTable() 方法支持几个重载:
(string key, GetDataTableCallback callback)
— 当缓存需要为空时,至少需要一个键和一个委托来填充缓存。
(string key, GetDataTableCallback callback, object callbackArguments)
—包含回调方法的参数数组。
(string key, GetDataTableCallback callback, object callbackArguments, TimeSpan cacheDuration)
—包含一个持续时间,它将重写在 web.config 中为该键指定的任何信息。
(string key, GetDataTableCallback callback, object callbackArguments, TimeSpan cacheDuration, bool IgnoreCache)
IgnoreCache
—如果不存在将被视为 false。把它设置为 true 将强制跳过缓存,并从原始来源请求值。
GetDataTableCallback 委托定义为:
public delegate DataTable GetDataTableCallback(object args);
因为大部分情况下用于从数据源请求数据的现有方法不使用 (object args) 的签名,所以通常的做法是使用该签名创建一个新的私有或保护方法,并从现有方法调用它。这种用法的示例如下所示。
用法:为数据访问层添加缓存支持
可下载的示例应