聊聊在AOP模式下的缓存方案-创新互联
面向方法的数据集缓存
使用了autofac做为ioc容器,使用Autofac.Extras.DynamicProxy2作为方法拦截器,缓存面向方法,直接在方法上添加CachingAttribute特性即可。
成都创新互联公司专注于中大型企业的成都网站建设、做网站和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上1000+,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!缓存注册流程
- 关于方法拦截器
- 缓存名称设计
- 添加ioc
- 添加拦截器与接口的绑定
- 在对应的接口实现类里,为方法添加CachingAttribute
- 缓存get,remove的作用
关于方法拦截器
方法拦截器是AOP面向方面编程的一个重要体现,将我们的功能点设计出现,与现有系统解耦,然后注入到项目里,哪些地方需要这个功能,就在哪个地方注入它。
AOP是以IOC容器为基础的,所以你的拦截器组件也需要提前被注入到ioc容器里,并且,现在不论是java还是.net,都提倡统一管理对象,而不是用new来生产对象,这一点也是面向接口编程的一种体现,而你在业务层进行对象传递时,永远依赖的是抽象,而不会依赖具体的实现!
缓存名称设计
名称由key和value组成
- key:项目名+对象名+缓存名称(CachingAttribute.key)
- value:缓存方法的参数名+参数值的组合
例如下面的缓存方法代码
[Caching(CachingMethod.Get, value = "time")]
DateTime GetTime(int id);
当调用为GetTime(1)
时,产生的缓存key值如下:
key="DataSetCache_IUserInfoService_time"
value="id_1"
添加ioc
builder.RegisterType();
builder.RegisterType()
.As()
.InstancePerLifetimeScope()
.InterceptedBy(typeof(CachingBehavior))
.EnableInterfaceInterceptors();
添加拦截器与接口的绑定
// 下面两句表示将CachingBehavior拦截器绑定到接口上
.InterceptedBy(typeof(CachingBehavior))
.EnableInterfaceInterceptors();
在方法上添加CachingAttribute特性
[Caching(CachingMethod.Get,value="time")]
DateTime GetTime();
我们可以在接口的方法上添加这个特性,也可以在接口的实现类的方法上添加这个特性,根据缓存的影响程度去添加。如果缓存对接口所有实现都启作用,就放在接口方法上,反之放在类的方法上。
缓存get,remove的作用
get
:一般作用在带有返回值的方法上,缓存名称为项目名+类名+value,当缓存存在时,直接返回,当不存在时,执行方法后,把返回值存入缓存,再返回。remove
:删除某个缓存,它直接把缓存名称value作为remove的参数注入。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前题目:聊聊在AOP模式下的缓存方案-创新互联
文章网址:http://myzitong.com/article/djhggo.html