移动到Web服务通信

时间:2012-11-09 20:52:50

标签: mobile service web

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

移动设备通过一堆记录向服务器发送消息。获取服务器上的记录似乎永远不会成为问题。它获取记录,然后将响应发送回移动设备以接收更新。问题是移动设备并不总是得到响应,所以它不知道它不应该再次发送这些记录进行更新。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

在来自特定设备的成功请求不再要求了解日志之前,服务器不会删除日志。因此,如果我在服务器上有日志1并且设备在下次上传时没有要求回复该日志,则服务器会删除该日志,假设设备获得了它想要的响应或者不再关心它。