与Azure表存储本地同步

时间:2011-09-05 13:48:11

标签: synchronization azure azure-storage azure-table-storage

我想将Azure表存储中的数据与本地Windows桌面客户端同步。桌面客户端应该无需一直在线工作,因此他必须从ATS下载最新数据并上传对本地数据所做的任何更改。

是否有预先制作的东西可以解决这个问题,还是我必须从头开始编码?

也许网上有一些我还没看到的文章。我想Sync Framework是这里的方法,但我没有找到任何关于Azure表存储使用的具体内容。

3 个答案:

答案 0 :(得分:1)

我认为实际同步数据本身是您遇到的最少问题。实际上,在断开连接时模拟azure存储,以便将大部分代码从实际实现中抽象出来,这可能会更具挑战性。 Azure表存储很难模拟。您可以尝试在本地客户端桌面上使用SQL Express,在其中使用PartitionKey,RowKey,TimeStamp和基于xml的BLOB来以与ATS相似的方式存储对象,但这样做很难正确地模拟。

我还没有看到任何这样做的技术或框架。您是否需要使用Azure表存储的容量和/或可伸缩性?你能用SQL Azure吗?在本地桌面客户端上运行SQL Express,将SQL Azure与SQL Express同步,以及在两个数据存储之间切换将更加简单。

答案 1 :(得分:0)

Microsoft Sync Framework可能会有所帮助吗?

https://msdn.microsoft.com/en-us/library/bb902854(v=sql.110).aspx

答案 2 :(得分:0)

另一种方法是通过RESTful服务公开您的数据(看看asp.net web api)。我们的想法是,您只需呼叫网址即可获取数据

 GET //yourapi/someresource

在标题或查询字符串中,您可以附加一些数据,以帮助服务决定要返回的内容。在我的情况下,我调出设备ID(在设备生成的Guid上)和最后一个同步时间戳。

使用这些功能,您可以在Web服务后面找一个小型同步管理器,它可以在一定时间后返回从其他位置更改的所有实体。为了使所有这些保持同步,我在azure存储中有一个同步日志,其中包含userId,entityId,deviceId,Timestamp。

通过查询和更新此表,我可以让服务器快速告诉我发生了哪些变化,而且速度很快,因为分区是按客户划分的。

由于我已经抽象了表存储,我实际上不需要在客户端上复制它,我可以存储我想要的数据。