我正在开发一项网络服务,该服务可以通过网站和移动客户端访问,而无需永久连接互联网。
这个想法是在互联网上和所有客户端上同步数据库。当用户在移动客户端上更改数据时,它在本地数据库中被标记为已更改。当用户在网站上更新数据时,在线数据库中的变更集会增加。同步后,客户端会记住其实际数据的变更集。问题是,当我在一个客户端上更改数据,然后在另一个客户端上然后触发同步时,Web 服务器不知道哪些数据是最后一个。
以下是它当前如何工作的示例:
- 可以说一切在一开始都是同步的。- 数据为“A”
- 第一个客户端更改数据并将其标记为已更改。- 客户端本地数据库中的数据更改为“B”
- 第二个客户端更改数据并将其标记为已更改 - 本地数据库中的数据更改为“C”
- 第一个客户端上线并更新在线数据库(文本现在是“B”)。在线数据库中的变更集增加了。
- 第二个客户端上线,检测在线数据库中的新变更集并下载新数据(本地“C”被在线“B”重写)(文本现在是“B”)
- 现在一切都同步了,但文本是“B”而不是“C”
我认为问题出在第 6 步。客户知道,既有本地更改又有在线更改,但无法确定正确的值是多少。
你能帮我吗,如何解决这个问题?我在考虑时间戳而不是变更集,但我不能确保所有客户端都有正确的时间。
PS:服务器使用MSSQL 运行WCF 服务,客户端是ASP.NET 网站和Andorid 和WP7 智能手机。它无法在在线数据库中保存有关客户端的任何信息。我希望客户端同步每天运行 +/- 一次。
我希望我的问题是可以理解的:) 谢谢。