0

我想问一下网络服务。

考虑一个场景:

我在 vfp 桌面应用程序中输入我的数据。当我点击“保存”时,应用程序将我的数据保存在本地数据库中,并将其作为 xml 发送到远程位置的 Web 服务(一个 php 文件)。然后,Web 服务将我的数据插入到远程位置的 vfp 数据库中。例如,当我点击“保存”时,我意识到我犯了一个错误。我更改了我的条目并再次点击“保存”。数据将通过 web 服务再次发送以更新远程位置的数据。

问题是 :

如何保证在第一次插入后将第二次更新插入远程位置?我的意思是操作的顺序会保证Web服务器中的操作顺序相同吗?

非常感谢。

4

1 回答 1

0

它通常不会是相同的顺序,因为这两个请求彼此隔离,到达目的地的时间取决于所采用的路线。在大多数情况下,它会按预期工作。

您可以让您的客户等待更新,直到上一次更新完成。只需检查来自远程位置的响应。

在远程位置端您无能为力,因为即使您可以检测到丢失的更新请求,您也没有它并且它可能永远不会出现。有两种方法可以检测丢失的请求:给每个请求一个正在进行的编号,或者在更新中添加某种版本。

第一种方式,如果请求到达,检查它是否有 number previousNumber + 1。如果没有,要么报告错误,要么延迟它直到请求previousNumber + 1到达。

对于第二种方式,检查远程数据的当前版本是否与请求中的预期版本相同。如果不是,则报告错误。

此版本可能是您单击“保存”按钮的时间。如果第二次更新在第一次之前到达,第一次更新的时间戳将小于第二次请求使用的当前时间戳。

于 2012-04-13T06:55:29.037 回答