如何在乐观并发模型下处理AppFabric中的数据争用?

时间:2012-07-10 18:48:30

标签: caching appfabric

根据this MSDN页面,“Put通过将版本信息作为可选参数来支持乐观并发;如果要替换的对象具有相同的版本,则只能成功。”

当版本不同时,有什么好的解决方案?缓存客户端是WCF服务。

1 个答案:

答案 0 :(得分:0)

如果版本不同,则表明另一个客户已经进入并更新了缓存对象。您可以通过捕获将从您的Put调用中抛出的DataCacheException并检查ErrorCodeDataCacheErrorCode枚举来检测到这一点 - CacheItemVersionMismatch是要测试的特定条目反对。捕获此错误表示您的当前客户端正在使用的缓存项目已过时,您应该从客户端获取最新版本(您可能想要或可能不想向用户显示)在您尝试再次进行更改之前。

这就是为什么在乐观并发场景中你想要获取缓存对象,进行更改然后尽快将其返回缓存 - 你不希望持有任何类型的版本 - 运行过程或你开始看到这些问题。