缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计。这些任务根据场景进行了组织,每个场景都给出了一个真实世界情况的示例,如添加条目到缓存,讨论了情况所需要的缓存功能,并展示了完成任务的代码。
根据场景组织这些任务的目的是给代码一个上下文环境。代替描述一组孤立的方法,以及无意义的可被最佳使用的地方,场景为代码提供了一个设置,并在对许多应用程序必须缓存数据的开发人员来说相似的情况中使用它。
被讨论的场景如下:
-
选择并配置一个缓存存储
-
添加一个条目到缓存,并设置它的过期时间
-
从缓存中移除一个条目
-
从缓存中获取一个条目
-
清除缓存
决定何时使用缓存应用程序块
缓存应用程序块被设计工作在绝大多数常规数据缓存情况中,当它是应用程序且缓存已存在于同样的系统中时。这意味着缓存是局部的,并且仅能由那个应用程序所使用。当它在这些原则中操作时,应用程序块解决下列情况是完美的:
-
需要跨不同应用程序环境的一致形式的缓存的情况
-
例如,使用缓存应用程序块,开发人员可以编写相似的代码来实现宿主在Internet 信息服务(IIS)中的应用程序组件、企业服务和智能客户端环境中的缓存。同时,同样的缓存配置选项已存在于所有的环境中。
需要可配置和持久化后端存储的情况
-
缓存应用程序块同时支持独立存储和数据库后端存储。开发人员可以创建其他后端存储并使用它的配置设置添加它们到缓存应用程序块中去。应用程序块在缓存条目的数据被持久化到后端存储前加密它。
需要修改缓存配置设置而不需要修改应用程序源码的情况
-
开发人员首先可以缩写使用一个或多个命名缓存的代码,系统操作员和开发人员可以随后用 Enterprise Library 配置控制台不同地配置每个命名缓存。
需要下列任何过期设置的情况:绝对时间、滑动时间、扩展的时间格式(例如,每个午夜)、文件依赖或者永不过期
-
关于使用过期设置的更多信息,请参见过期处理的设计。
开发人员打算修改缓存应用程序块的源码
-
关于修改缓存应用程序块的更多信息,请参见修改缓存应用程序块。
另外,缓存应用程序块提供了与其他 Enterprise Library 应用程序块一致的开发模型。缓存应用程序块为后端存储功能与数据访问应用程序块进行了无缝集成。以同样的方式,安全应用程序块包含了由缓存应用程序块提供的缓存能力。开发人员和操作人员使用 Enterprise Library 配置控制台配置应用程序块。
使用缓存应用程序块的其他选择
由其他缓存解决方案更好服务的情况是当多个应用程序使用缓存或者当缓存和应用程序不在同一系统中时。例如,不能跨越一个 Web farm 同步缓存。
ASP.NET 缓存
.NET 框架在 System.Web 命名空间中包含了 ASP.NET 缓存,ASP.NET 应用程序开发者通过 System.Web.HTTPContext.Cache
对象访问这个缓存。ASP.NET 缓存被开发并为 ASP.NET 应用程序进行了调整。然后,这个缓存也可以通过访问 System.Web.HTTPRuntime.Cache
对象来在 ASP.NET 应用程序之外使用。ASP.NET 缓存需要 System.Web 程序集,开发人员要验证该程序集在需要的平台和目标环境中是受支持的。
安全
尽管可以加密缓存在后端存储中的数据,缓存应用程序块不支持缓存在内存中的数据加密。如果恶意用户找到危及系统安全的方法,并访问到应用程序进程的内存,他或她将能访问存储缓存中的信息。如果这对应用程序来说是重大威胁,就不要在缓存中存储敏感信息,如信用卡号码或密码。