知识大全 为 ASP.NET 创建缓存配置对象
Posted 知
篇首语:读书是最好的学习。追随伟大人物的思想,是最富有趣味的一门科学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 为 ASP.NET 创建缓存配置对象相关的知识,希望对你有一定的参考价值。
为 ASP.NET 创建缓存配置对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
简介 如果您还没有阅读过 ASP NET Caching:Techniques and Best Practices 请阅读 本文主要以该文章的内容为基础 尤其是最佳实践 本文将描述 CacheConfig 类的内部组成 该帮助器类为 Microsoft ASP NET 中的 Cache 对象提供包装 该类公开了一个非常简单的方法 用于完成 ASP NET 应用程序内的大部分公共缓存工作 使用 CacheConfig类 可以通过翻转配置设置启用或禁用缓存 通过配置设置管理所有缓存项和其缓存持续时间 也可以只用一行代码 使用前面文章中描述的最佳实践技术来访问缓存 配置 CacheConfig 从 nfig 文件读取其所有配置设置 指定的节和该节内的每个键值都使用缺省值定义为静态字符串 如代码示例 所示 代码示例 配置节和键名 protected static string cacheSettingsConfigName = CacheSettings ; protected static string EnableCachingKey = EnableCaching ; protected static string RequireKeyDefinitionInConfigKey = RequireKeyDefinitionInConfig ; protected static string DefaultCacheDurationUnitsKey = DefaultCacheDurationUnits ; protected static string DefaultCacheDurationValueKey = DefaultCacheDurationValue ; 默认情况下 所有 CacheConfig 配置设置都存储在名为 CacheSettings 的自定义配置节中 该节被定义为简单的 NameValueCollection 就像内置的 AppSettings 配置节一样 必须把该新配置节定义在 nfig 中 如代码示例 所示 代码示例 在 nfig 中定义 CacheSettings 配置节 <configSections> <section name= CacheSettings type= System Configuration NameValueFileSectionHandler System Version= Culture=neutral PublicKeyToken=b a c e /> </configSections> <configSections> 元素必须是 nfig 配置元素中的第一个元素 一旦该节在 nfig 中定义并添加适当的键 它将在应用程序中管理 CacheConfig 类的行为 代码示例 显示了示例 CacheSettings 节 代码示例 CacheSettings 键和值 <CacheSettings> <! true/false > <add key= EnableCaching value= true /> <! true/false > <add key= RequireKeyDefinitionInConfig value= true /> <! seconds minutes or hours > <add key= DefaultCacheDurationUnits value= seconds /> <! integer > <add key= DefaultCacheDurationValue value= /> <! Cache Keys and Durations use default for value to use default otherwise integer > <add key= AuthorsDataTable value= default /> <add key= AuthorsDataTableByState value= /> </CacheSettings> 前四个键对 CacheConfig 的行为影响最大 最后几个键定义了所有对象的缓存键名和缓存持续时间 这些对象存储在使用 CacheConfig 的缓存中 表 描述了前几个配置值的效果 表 配置设置和它们的效果 设置 描述 EnableCaching True/False 当它为 false 时 CacheConfig 被有效禁用 不会向缓存写项或从缓存读项 RequireKeyDefinitionInConfig True/False 当它为 true 时 如果为 CacheConfig 提供了一个键但在 nfig 中没有该键 将引发异常 DefaultCacheDurationUnits seconds minutes 或 hours 为下一节指定的持续时间值定义单位 用作添加到缓存但没有指定时间段的项的默认缓存持续时间 DefaultCacheDurationValue (整数) 指定一个项应该在缓存中存储的时间长度 使用 DefaultCacheDurationUnits 中定义的单位 用作添加到缓存但没有指定时间段的项的默认缓存持续时间 由于这只是 CacheConfig 类的 版 所以非常简单 未来的增强功能可能添加对其他类型关键依赖项的支持 例如文件 就像存储当前设置一样在配置中存储文件路径 大部分缓存都缓存来自 Microsoft SQL Server? 的数据 所以基于时间的缓存就足够了(至少到 ASP NET 的缓存 API 可使用 SQL 表缓存无效的内置支持时为止) 首次使用 CacheConfig 是个完全静态(在 Microsoft Visual Basic 中是共享的)的类 这意味着它永远不能直接实例化 但是 它的方法可以直接使用 然而 它确实有一个构造函数 每当第一次调用它的某种方法时调用该构造函数 该静态构造函数执行如下任务 将 CacheSettings 配置节加载到本地 NameValueCollection 根据配置设置对本地 EnableCaching 变量进行设置 根据配置设置对本地 RequireKeyDefinition 变量进行设置 根据配置设置对本地 DefaultCacheDuration TimeSpan 进行设置 检查 HttpContext(缓存所需)是否可用 如果不可用就把 EnableCaching 设置为 false(在设计时或者从 windows 窗体应用程序调用数据访问层时避免错误) 当第一次引用 CacheConfig 时 静态构造函数只调用一次 但是 因为所有设置都存储在 nfig 中 所以任何更新都将导致应用程序完全重启 这当然意味着下次调用 CacheConfig 将再次运行静态构造函数并检索最新的值 基本方法 DeCache 我调用的唯一方法是 DeCache DeCache为给定的键从缓存请求出一个值 如果缓存中不存在该值 DeCache将使用作为回调函数提供的方法重新填充缓存 并返回该方法的结果 CacheConfig 还可以用于使用 EnCache()方法简单地向缓存添加一个项 但几乎很少使用这个功能 对于每个要缓存的数据类型 都必须有一个单独的 DeCache 方法 本文提供的 CacheConfig 版仅支持 DataTable 对象 这可以很容易地进行扩展以包含其他的对象 包括 System Object(如果期望最终的灵活性超越强类型检查) 但这样做需要许多重复代码 一旦 C# 支持通用性 就可以避免许多这种重复代码 希望能产生该工具的新版本 DeCacheDataTable() 方法支持几个重载 (string key GetDataTableCallback callback) — 当缓存需要为空时 至少需要一个键和一个委托来填充缓存 (string key GetDataTableCallback callback object[] callbackArguments) —包含回调方法的参数数组 (string key GetDataTableCallback callback object[] callbackArguments TimeSpan cacheDuration) —包含一个持续时间 它将重写在 nfig 中为该键指定的任何信息 (string key GetDataTableCallback callback object[] callbackArguments TimeSpan cacheDuration bool IgnoreCache) IgnoreCache —如果不存在将被视为 false 把它设置为 true 将强制跳过缓存 并从原始来源请求值 GetDataTableCallback 委托定义为 public delegate DataTable GetDataTableCallback(object[] args); 因为大部分情况下用于从数据源请求数据的现有方法不使用 (object[] args) 的签名 所以通常的做法是使用该签名创建一个新的私有或保护方法 并从现有方法调用它 这种用法的示例如下所示 用法 为数据访问层添加缓存支持 可下载的示例应用程序包含一个非常简单的 web 应用程序 该应用程序有一个用于列举 Pubs 数据库中作者的 Web 窗体和一个用于查询 Pubs 以获取这些作者的数据访问类 数据访问类 Author cs 使用 Microsoft 数据访问应用程序块最小化数据访问所需的代码量 在添加缓存支持之前 它包含两个方法 ListAuthors() 和 ListAuthors(string state) 每个方法返回一个带有 Authors 表内容的 DataTable—后者用 state 列的值过滤 添加缓存支持之前的 ListAuthors() 方法如代码示例 所示 代码示例 没有缓存支持的简单数据访问方法 public static DataTable ListAuthors() return SqlHelper ExecuteDataset(ConnectionString CommandType Text SELECT * FROM Authors ) Tables[ ]; 使用 CacheConfig 为该方法添加缓存支持 必须首先创建一个匹配 GetDataTableCalllback 委托签名的新重载 这意味着必须返回一个 DataTable 并接受一个对象数组作为它唯一的参数 我们将把实际数据访问代码移动到这个新方法中 如代码示例 所示 代码示例 把实际数据访问代码移动到匹配委托的方法中 protected static DataTable ListAuthors(object[] args) return SqlHelper ExecuteDataset(ConnectionString CommandType Text SELECT * FROM Authors ) Tables[ ]; 创建新方法后 更改原始方法以使用 CacheConfig DeCache() 方法 并向它发送一个引用新 ListAuthors(object[]) 方法的回调函数 代码示例 显示了 ListAuthors() 的新版本 代码示例 ListAuthors() 现在修改为包含缓存支持 public sta cha138/Article/program/net/201311/11320相关参考
ASP.NET应用中缓存Oracle数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了创建
ASP.NET缓存总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一缓存概念缓存的好处类型
ASP.NET缓存介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET缓存
ASP.NET缓存分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 说到ASPNET缓存那就是
ASP.NET缓存简述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以前对缓存的认识比较零碎最
ASP.NET输出缓存的移除 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET输出缓存
ASP.NET应用中缓存Oracle数据[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为
新手基础教程:ASP.NET2.0缓存技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASP
ASP.NET缓存:方法分析和实践示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 尽早缓存经
ASP.NET缓存方法分析和实践示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 尽早缓存经常