聊聊在AOP模式下的缓存方案

文章插图
面向方法的数据集缓存使用了autofac做为ioc容器,使用Autofac.Extras.DynamicProxy2作为方法拦截器,缓存面向方法,直接在方法上添加CachingAttribute特性即可 。
缓存注册流程
- 关于方法拦截器
- 缓存名称设计
- 添加ioc
- 添加拦截器与接口的绑定
- 在对应的接口实现类里,为方法添加CachingAttribute
- 缓存get,remove的作用
AOP是以IOC容器为基础的,所以你的拦截器组件也需要提前被注入到ioc容器里,并且,现在不论是JAVA还是.net,都提倡统一管理对象,而不是用new来生产对象,这一点也是面向接口编程的一种体现,而你在业务层进行对象传递时,永远依赖的是抽象,而不会依赖具体的实现!缓存名称设计名称由key和value组成
- key:项目名+对象名+缓存名称(CachingAttribute.key)
- value:缓存方法的参数名+参数值的组合
- 例如下面的缓存方法代码
key="DataSetCache_IUserInfoService_time"value=https://www.isolves.com/it/cxkf/bk/2019-10-15/"id_1"添加iocbuilder.RegisterType<CachingBehavior>(); builder.RegisterType<DefaultUserInfoService>() .As<IUserInfoService>() .InstancePerLifetimeScope() .InterceptedBy(typeof(CachingBehavior)) .EnableInterfaceInterceptors();添加拦截器与接口的绑定 // 下面两句表示将CachingBehavior拦截器绑定到接口上 .InterceptedBy(typeof(CachingBehavior)) .EnableInterfaceInterceptors();在方法上添加CachingAttribute特性[Caching(CachingMethod.Get,value=https://www.isolves.com/it/cxkf/bk/2019-10-15/"time")]DateTime GetTime();
我们可以在接口的方法上添加这个特性,也可以在接口的实现类的方法上添加这个特性,根据缓存的影响程度去添加 。如果缓存对接口所有实现都启作用,就放在接口方法上,反之放在类的方法上 。缓存get,remove的作用
- get:一般作用在带有返回值的方法上,缓存名称为项目名+类名+value,当缓存存在时,直接返回,当不存在时,执行方法后,把返回值存入缓存,再返回 。
- remove:删除某个缓存,它直接把缓存名称value作为remove的参数注入 。
【聊聊在AOP模式下的缓存方案】
推荐阅读
- 梦见家人反对我的感情 梦见家人反对我和男友在一起
- 茶乡 茶事 茶情
- 新鲜佛手柑的吃法
- 手臂变粗的原因是什么?
- 手冻伤后变粗怎么恢复
- 挡鼠板怎么安装 挡鼠板一般在哪里能买到
- 中国茶叶分类!全在这里
- 世界最早茶市在彭山
- 美媒,在中国喝茶以敲桌示感谢 此礼节起源位皇帝
- 梦见一只超级大的老鼠打不死 梦见一只超级大的老鼠在跟猫打架,抓住了,给烧死了