微软企业库4.1学习笔记(十九)缓存模块7 扩展和修改缓存模块
缓存模块可以满足大部分的缓存使用情形。但是,还是会有你想要自定义一些模块行为,来满足应用特殊需求的时候。你可以通过两个方式来达到目的:
- 通过缓存模块提供的扩展点,扩展现有功能
- 修改源代码
一、扩展缓存模块
通过设计好的扩展点来扩展应用的功能。典型的方式为,写一个自定义的类,实现某个接口,或者是继承某个抽象类。因为这些自定义类是在你的应用中使用,你不需要修改和重新编译模块。
你可以自定义一种新的后端存储方式,添加一种过期策略,或者是新的CacheManager。
1.1添加新的后端存储
添加一个新类,实现IBackingStore接口,或者是继承自BaseBackingStore类。你一定要在实现的方法中保证,如果在访问后端存储的时候发生意外的话,后端存储仍然完整无缺,可以提供服务。
因为是Cache操作,可以确保任何对后端存储的操作都是单线程的方式。这意味着在你实现的过程中不用考虑线程安全。
1.2添加一个新的过期策略
实现一个新的过期策略,需要添加的类实现下面的接口:
- ICacheItemExpiration,接口允许开发者定义自己的过期规则,定义如何和什么时候一个缓存项CacheItem过期。
- ICacheItemRefreshAction,过期之后,可以更新缓存,实现这个接口的类必须可序列化。
1.3改变默认的CacheManager
缓存模块中的CacheManager实现了ICaheManager接口。当系统初始化的时候,CacheManager从后端存储中加载数据到内存中,通过它暴露的方法,可以添加项,删除项,获取缓存的数据。
尽管默认的CacheManager可以满足大部分的应用需要,还是有可能在你的应用有特殊需求的时候,你可以实现自己的CacheManager来修改缓存模块的行为。下面列出一些你可能会需要的功能:
实现一个分布式的、或者是特殊的缓存方式,支持不同的解决方案,不仅仅是存储和获取数据,通过添加自定义的后端存储也解决不了。
改变CacheManager加载数据到内存的方式,只加载最常使用的项,或者是按照要求使得加载项最少。
创建自定义的CacheManager,需要实现ICacheManager接口,还需要添加下面的特性,告诉配置系统这个CacheManager类是可以安装和配置的类。
[ConfigurationElementType(typeof(CustomCacheManagerData))]
二、修改模块
如果你需要修改模块来满足应用的一些特殊需求的话,请参考下面的指导:
- 确保你了解了模块的运行,阅读了相关的文档。
- 如果你需要添加新的功能模块,而且需要和原来的一些模块一起运行的话,最好修改模块的命名空间,也要修改相关模块的命名空间。
- 使用签名,使用签名可以保证程序集的唯一性
- 在修改之后,记得要重新编译企业库的代码
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/archive/2011/12/14/2287844.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端