Web applications 移动设备上的最新编辑<-&燃气轮机;Web应用程序双向同步

Web applications 移动设备上的最新编辑<-&燃气轮机;Web应用程序双向同步,web-applications,synchronization,mobile-application,Web Applications,Synchronization,Mobile Application,标题基本上就是这么说的。我有一个应用程序,它可以作为web应用程序和移动应用程序使用。移动应用程序接收数据并将数据发送到服务器。在进行同步时,有几种情况需要处理,但我需要知道哪种情况是最新的编辑。我计划在移动应用程序的开始和停止时进行同步。最困难的情况可能是用户在没有互联网的情况下启动应用程序,但在没有互联网的情况下关闭应用程序。如何解决这个问题 请注意,时间戳是无用的,因为您在移动设备上,用户可能会更改时钟 你有什么建议?我不想问用户关于冲突解决的问题,而是实现一些自动化。(以最新的为例) 谢

标题基本上就是这么说的。我有一个应用程序,它可以作为web应用程序和移动应用程序使用。移动应用程序接收数据并将数据发送到服务器。在进行同步时,有几种情况需要处理,但我需要知道哪种情况是最新的编辑。我计划在移动应用程序的开始和停止时进行同步。最困难的情况可能是用户在没有互联网的情况下启动应用程序,但在没有互联网的情况下关闭应用程序。如何解决这个问题

请注意,时间戳是无用的,因为您在移动设备上,用户可能会更改时钟

你有什么建议?我不想问用户关于冲突解决的问题,而是实现一些自动化。(以最新的为例)


谢谢

时间戳不是无用的,你只需要重新考虑如何使用它。在这种情况下,时间就是上帝。当移动设备与服务器建立联系时,移动设备可以让服务器知道相关数据是在多久以前创建的。然后,一旦信息被传输,服务器就知道将数据的时间设置为服务器上的当前时间减去移动设备提供的时间

例如:

  • 8am直接在webapp上更新您的数据-正确时间
  • 上午9点数据在手机上更新-(无网络访问+时间不可信)
  • 上午10点更多数据更新到webapp(目前服务器上有2个数据条目)
  • 上午11点您的手机可以访问网络并与服务器联系。你的手机知道早上9点的数据是2小时前的,所以这是它需要告诉服务器的。服务器接收到数据,现在知道数据已经存在2小时了。服务器能够保留时间戳为:(服务器上的当前时间)的新信息- 2小时)

这样,无论移动设备上的时间是多少,上午9点数据的时间都是正确的。

时间戳不是无用的,你只需要重新考虑如何使用它。在这种情况下,时间就是上帝。当移动设备与服务器建立联系时,移动设备可以让服务器知道相关数据是在多久以前创建的。然后,一旦信息被传输,服务器就知道将数据的时间设置为服务器上的当前时间减去移动设备提供的时间

例如:

  • 8am直接在webapp上更新您的数据-正确时间
  • 上午9点数据在手机上更新-(无网络访问+时间不可信)
  • 上午10点更多数据更新到webapp(目前服务器上有2个数据条目)
  • 上午11点您的手机可以访问网络并与服务器联系。你的手机知道早上9点的数据是2小时前的,所以这是它需要告诉服务器的。服务器接收到数据,现在知道数据已经存在2小时了。服务器能够保留时间戳为:(服务器上的当前时间)的新信息- 2小时)

这样,无论移动设备上的时间是多少,上午9点数据的时间都是正确的。

我不同意:多久以前是相当危险的。例如,一些国家有夏时制

我认为您应该研究像couchdb(和他的sqlite表兄:PockDB)这样的现成解决方案:您可以进行显式或隐式同步,并且在解决冲突方面做了大量工作

我不敢苟同:多久以前是相当危险的。例如,一些国家有夏时制

我认为您应该研究像couchdb(和他的sqlite表兄:PockDB)这样的现成解决方案:您可以进行显式或隐式同步,并且在解决冲突方面做了大量工作
试试看。它是一个针对iOS和Android的嵌入式NoSQL存储,能够与CouchDB和Couchbase服务器同步。

试试看。它是一个针对iOS和Android的嵌入式NoSQL存储,能够与CouchDB和Couchbase服务器同步。

夏令时和区域设置不仅用于以用户理解的格式显示时间,我在回答中提到的是unix时间。至于同步,如果它是现有数据,那么可以使用版本号,合并更改应该不会有问题。然而,当我读到这个问题时,我认为这意味着最终用户正在向webapp发送新数据。这意味着这不是解决冲突的问题。这真的取决于他们想要实现什么。解决冲突是不可能的,因为你可以在移动和web应用程序上添加/编辑数据。不知道我是否想用couchDB。还需要检查PhoneGap或我可能用于移动部件的任何其他软件是否支持它。要编辑现有数据,可能需要在对象上输入版本号。如果在连接到服务器的过程中出现冲突,那么您可以使用一些逻辑来确定哪一个是最新的,或者提示用户确认哪些数据最好保留。我认为询问用户是完全可以接受的。这就是当我的手机联系人与我的电脑同步时发生的事情(正是我想要的方式)。我不确定NoSQL在这个用例中会有多大帮助,但它确实值得一试。我以前使用过CouchDB,你可以很快得到一个原型解决方案并运行起来。夏令时和语言环境不仅仅用于以用户理解的格式显示时间,我在回答中指的是unix时间。至于同步,如果它是现有数据,那么可以使用版本号,合并更改应该不会有问题。然而,当我读到这个问题时,我认为这意味着最终用户正在向webapp发送新数据。这意味着这不是解决冲突的问题。这真的取决于他们想要实现什么。解决冲突是不可能的,因为你可以在移动和web应用程序上添加/编辑数据。不知道我是否想用couchDB。还需要检查PhoneGap或我可能用于移动部件的任何其他软件是否支持它。要编辑现有数据,请在对象上输入版本号