Rest 低连接协议或技术

Rest 低连接协议或技术,rest,tcp,server,protocols,connectivity,Rest,Tcp,Server,Protocols,Connectivity,另一位程序员开发了一个服务器应用程序网站,我正在努力提高其可靠性。 目前,android智能手机开始与服务器组件建立tcp连接以交换数据。服务器获取数据,将其写入数据库,其他用户可以通过网站查看数据。问题是,智能手机经常出现在连通性非常差的位置。结果是智能手机失去tcp连接,很难重新连接。现在我的问题是,是否有任何协议是如此轻量级或适应不良的连接,以至于数据交换可以更好或更可靠地工作 例如,我曾考虑用RESTful API替换原始TCP接口,但我真的不知道REST在这种情况下工作得如何,因为我在

另一位程序员开发了一个服务器应用程序网站,我正在努力提高其可靠性。 目前,android智能手机开始与服务器组件建立tcp连接以交换数据。服务器获取数据,将其写入数据库,其他用户可以通过网站查看数据。问题是,智能手机经常出现在连通性非常差的位置。结果是智能手机失去tcp连接,很难重新连接。现在我的问题是,是否有任何协议是如此轻量级或适应不良的连接,以至于数据交换可以更好或更可靠地工作

例如,我曾考虑用RESTful API替换原始TCP接口,但我真的不知道REST在这种情况下工作得如何,因为我在这方面没有任何经验

也许知道这一点对回答这个问题很有用:服务器组件是用c#编程的。连接组件是android智能手机

请理解,我没有给这个问题添加一些代码,因为在我看来这只是一个理论上的问题


提前谢谢你

REST通过HTTP运行,而HTTP通过TCP运行,因此它在连接方面也会遇到同样的问题

将堆栈向上移动到应用程序,您可能会想到“干扰”。我经常不得不在接收信号有限的偏远地区使用技术设备,这让我想起在暴风雨中尝试通信的情景。如果你想一想,如果你试图让某人在暴风雨中做某事,而他们几乎听不见你的声音,并且单词被吹走(信号丢失),你就不会读他们关于如何修复某件事情的手册,而是喊出诸如“把手”、“拉”、“拉”、“拉”、“好”之类的关键词。因此,信息以小脉冲的形式传递给他们,你可以重复(拉,什么?拉,呃?拉!哦,对了!)

您能否重新设计android应用程序和服务器之间的通信,以便服务器能够识别带有相应数据的关键词,并在一段时间内建立请求?如果你考虑幂等,每个突发数据将不会改变请求,如果它已经被接收(拉,拉!),随着时间的推移,Android应用程序可以发送/接收较小的请求块。如果信号没有消失,就继续发送。如果出现故障,请注意请求的哪些部分尚未发送,并在信号返回时重试

因此,您发送的是拼图风格的请求,但服务器知道如何按照正确的顺序重新组装这些片段。结尾的停止字告诉服务器ok此请求已完成,继续处理。在该字到达之前,服务器可以存储未完成的请求,或者在没有更多数据进入时丢弃该请求

如果服务器使用id响应第一个请求块,应用程序可以使用该id获取响应并继续尝试,直到返回完整响应,此时服务器可以从jigsaw缓存中删除响应。不过还是有相当多的工作要做