与Azure表存储的本地同步



我想与本地windows桌面客户端同步Azure表存储中的数据。桌面客户端应该在不在线的情况下工作,所以他必须从ATS下载最新的数据,并上传对本地数据所做的任何更改。

是否有预先制作的东西来照顾这个,或者我必须从头开始编写这个?

也许网上有些文章我还没看到。我认为同步框架是这里的方式,但我没有找到任何具体的使用与Azure表存储

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

我还没有看到任何技术或框架可以做到这一点。您对容量和/或可伸缩性的需求是否非常大,以至于必须使用Azure表存储?你能用SQL Azure代替吗?在本地桌面客户端上运行SQL Express,同步SQL Azure和SQL Express,以及在两个数据存储之间切换将会简单得多。

另一种方法是通过RESTful服务公开数据(请查看asp.net web api)。我们的想法是,您只需调用a url来获取数据

 GET //yourapi/someresource

在头部或查询字符串中,你可以附加一些数据来帮助服务决定给你什么。在我的情况下,我传递了设备id (On device Generated Guid)和最后一次同步时间戳。

使用这些,你可以在web服务后面设置一个小的同步管理器,在一段时间后,它会给你从其他位置更改的所有实体。为了保持所有这些同步,我在azure存储中有一个同步日志,具有userId, entityId, deviceId, Timestamp。

通过查询和更新这个表,我可以让服务器快速告诉我发生了什么变化,这很快,因为分区是每个客户的。

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

微软同步框架可能会有所帮助?

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

相关内容

  • 没有找到相关文章

最新更新