本次升级除了更新了发红包接口等接口之外,最重要的是重构了缓存模块。
如何升级?
之前的缓存是为Container设计的,原先的ContainerCacheStrategy继承自BaseCacheStragegy。这次更新之后,在ContainerCacheStrategy和BaseCacheStragegy中间加了一层ObjectCacheStrategy,用于处理所有Key为String类型的缓存(Value为Object类型)。
Sample中的代码已经进行了同步的修改。
所以如果您是在以前的版本上进行升级,必须要对代码做如下修改:
1、 ContainerCache缓存策略不再需要注册,改为对ObjectCache缓存策略的注册,例如:
原先的Container注册方法为(Redis为例):
CacheStrategyFactory.RegisterContainerCacheStrategy(() => RedisContainerCacheStrategy.Instance);//Redis
现在改为:
CacheStrategyFactory.RegisterObjectCacheStrategy(() => RedisObjectCacheStrategy.Instance);//Redis
注意:大部分的升级内容,只要编译一次就可以根据编译器报错找到修改的地方,但是上述lambda表达式中的 RedisObjectCacheStrategy ,即使保留原来的 RedisContainerCacheStrategy 也不会在编译时报错,所以需要格外注意!
2、CacheStrategyFactory.GetContainerCacheStrategyInstance()方法已经废除,现改为:
CacheStrategyFactory.GetObjectCacheStrategyInstance(); 返回的是ObjectCacheStrategy,不再是ContainerCacheStrategy
用法:
var objectCacheStrategy = CacheStrategyFactory.GetObjectCacheStrategyInstance();
现在的ContainerCacheStrategy实例可以从objectCacheStrategy .ContainerCacheStrategy获得,例如:
原先的containerCacheStrategy获取方法为:
CacheStrategyFactory.GetContainerCacheStrategyInstance()
现在改为:
CacheStrategyFactory.GetObjectCacheStrategyInstance().ContainerCacheStrategy
升级说明
本次更新之后看似某些部分缓存初始化的代码会更长一些(多数存在于SDK内部,开发者不会感觉到,所有的接口调用方法没有任何改变),但是对于SDK的扩展能力来说是一个新的里程碑:以前缓存策略专为Container设计(或者说Container优先),而目前的缓存策略已经可以支持几乎所有的缓存类型!这次升级为接下来SDK更多的功能升级提供了强有力的底层保证,尤其下一步包括小程序在内的实时互动开发提前奠定基础。