低连接性协议或技术

时间:2018-04-18 15:31:05

标签: rest tcp server protocols connectivity

我正在尝试增强服务器应用程序网站架构的可靠性,另一位程序员已经开发出来了。 目前,android智能手机启动与服务器组件的tcp连接以交换数据。服务器获取数据,将数据写入数据库,另一个用户可以通过网站查看数据。问题是智能手机经常处于连接非常糟糕的地方。结果是智能手机失去了tcp连接,很难重新连接。现在我的问题是,如果有任何协议如此轻量级或适应不良连接,数据交换可以更好或更可靠地工作。

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

回答这个问题可能有用:服务器组件用c#编程。连接组件是Android智能手机。

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

提前谢谢!

1 个答案:

答案 0 :(得分:0)

REST通过HTTP运行,它通过TCP运行,因此它会遇到与连接相同的问题。

将堆栈升级到应用程序,您可能会考虑“干扰”。我经常不得不在接收有限的偏远地区使用技术资料,它会让人想起在暴风雨中进行沟通。如果你考虑一下,如果你想让某人在风暴中做一些事情,他们几乎听不到你的声音,那些话会被吹走(信号丢失),你就不会读到关于如何解决问题的手册,你会喊出关键词,如'手柄','拉','拉','拉','好'。所以信息以小爆发的形式到达你可以重复(拉,什么?拉,呃?拉!哦,对了!)

您是否可以重新设计Android应用程序和服务器之间的通信,以便服务器能够识别具有相应数据的关键“单词”并在一段时间内构建请求?如果你考虑幂等性,如果已经收到请求,那么每个数据突发都不会改变请求(拉,拉!)随着时间的推移,android应用程序可以发送/接收更小的请求块。如果信号保持不变,请继续发送。如果它发生故障,请注意请求的哪些部分尚未发送,并在信号返回时重试。

所以你发送请求拼图风格但服务器知道如何以正确的顺序重新组装这些部分。最后一个STOP字告诉服务器确定此请求已完成,继续处理它。在该单词到达之前,服务器可以存储未完成的请求,或者在没有更多数据进入时丢弃它。

如果服务器响应带有id的第一个请求块,则应用程序可以使用id获取响应并继续尝试,直到完整响应返回,此时服务器可以从其拼图缓存中删除响应。相当多的工作。