服务器和许多脱机客户端的同步协议

时间:2012-07-08 16:17:31

标签: wcf timestamp changeset data-synchronization

我正在开发一项网络服务,可以通过网站和移动客户端访问,而无需永久的互联网连接。

我们的想法是在互联网上以及所有客户端上同步数据库。当用户更改移动客户端上的数据时,它会在本地数据库中标记为已更改。当用户更新网站上的数据时,在线数据库中的变更集会增加。同步后,客户端会记住其实际数据的变更集。问题是,当我在一个客户端上更改数据,然后在另一个客户端上然后触发同步时,Web服务器不知道哪个数据是最后一个。

以下是目前的工作原理:

  1. 让我们说一切都在一开始就是同步的。 - 数据为“A”
  2. 第一个客户端更改数据并将其标记为已更改。 - 数据在客户端本地db中更改为“B”
  3. 第二个客户端更改数据并将其标记为已更改 - 数据在本地数据库中更改为“C”
  4. 第一个客户端上线并更新在线数据库(文本现在为“B”)。在线数据库中的变更集增加了。
  5. 第二个客户端上线,检测在线数据库中的新变更集并下载新数据(本地“C”用在线“B”重写)(文本现在为“B”)
  6. 现在一切都已同步,但文字是“B”而不是“C”
  7. 我认为问题出在第6步。客户端知道,既有本地更改也有在线更改,但无法确定正确的值。

    你能帮帮我,怎么解决这个问题?我在考虑时间戳而不是变更集,但我不能确保所有客户都有正确的时间。

    PS:服务器使用MSSQL运行WCF服务,客户端是ASP.NET网站和Andorid和WP7智能手机。它无法在在线数据库中保存有关客户端的任何信息。我希望客户端同步每天运行+/-一次。

    我希望我的问题可以理解:) 感谢。

0 个答案:

没有答案