0

我创建了一个相互通信的 Web 服务和一个移动应用程序。当一切正常时,它工作得很好。当服务器没有响应时,它开始崩溃。

移动设备向服务器发送一条带有一堆记录的消息。在服务器上获取记录似乎从来都不是问题。它获取记录,然后将收到更新的响应发送回移动设备。问题是移动设备并不总是得到响应,所以它不知道它不应该再次发送这些记录进行更新。

下次它再次发送记录,现在我有重复的记录。我该如何解决这个问题?

想法1)在移动设备上创建一个唯一的交易号,我可以与服务器进行比较以查看记录是否已上传。然后不要写该记录并尝试发回它所写的响应。

想法 2) 将记录发送到服务器,但在写入它们之前响应移动设备已收到它们。这样,移动设备可以标记它们,然后向服务器发送另一个响应,告诉它写入它们。此时移动设备几乎不在乎它是否得到响应。唯一的问题是,您不知道服务器是否收到了消息。

寻找有关如何处理此问题的想法,以确认其中一个想法或具有完全不同的想法。

4

1 回答 1

0

我最终创建了设备在从服务器返回成功响应时尝试解析的日志。

我将项目标记为一批行并将它们发送到服务器。一旦他们在那里,我创建一个关于一批项目中每个行项目成功或失败的日志,然后将日志保存到文件系统。

当移动设备未能成功从服务器收到响应时,在极少数情况下,它会向服务器询问批号。如果服务器没有响应该批次的状态,则假定服务器从未收到它并备注这些项目以进行另一次上传尝试。如果收到回复,它会逐行处理成功和失败,然后在移动设备上相应地标记项目。如果移动设备在下一次上传时没有询问日志,则服务器假定批次的生命周期已完成,不再需要维护该日志。然后将其删除。

服务器不会删除日志,直到它有来自特定设备的成功请求,不再询问有关日志的信息。因此,如果我在服务器上有日志 1,并且设备在下一次上传时没有要求收听该日志,则服务器会删除该日志,假设设备得到了它想要的响应或不再关心它。

于 2013-11-15T21:00:14.177 回答