我正在尝试增强服务器-应用-网站架构的可靠性,这是另一位程序员开发的。目前,android智能手机启动了与服务器组件的tcp连接以交换数据。服务器获取数据,将它们写入数据库,另一个用户可以通过网站查看数据。问题是,智能手机经常处于连通性非常差的位置。结果是智能手机失去了tcp连接,很难重新连接。现在我的问题是,是否有任何协议是如此轻量级或适应关于糟糕的连接,以使数据交换可以更好地或更可靠地工作。
例如,我在考虑用RESTful API替换原始的TCP接口,但我真的不知道REST在这个场景中有多好用,因为我在这方面没有任何经验。
知道这个问题可能对回答这个问题很有用:服务器组件是用c#编写的。连接组件是android智能手机。
请理解,我不会在这个问题上添加一些代码,因为在我看来,这只是一个理论上的问题。
提前谢谢你!
发布于 2018-04-19 19:21:41
REST运行在HTTP上,而HTTP运行在TCP上,因此它在连接方面也会遇到同样的问题。
将堆栈向上移动到应用程序,您可能会认为是“干扰”。我经常不得不在接收信号有限的偏远地区使用技术工具,这让我想起了在风暴中试图沟通的情景。如果你想一想,如果你试图让某人在风暴中做某事,他们几乎听不到你的声音,单词被吹走了(信号丢失),你不会给他们读如何修复某事的手册,你会喊出诸如“处理”、“拉”、“好”之类的关键词。所以信息以很小的突发性到达他们,你可以重复(拉,什么?拉一下,嗯?拉!哦,对了!)
你能重新设计android应用程序和服务器之间的通信,这样服务器就可以识别关键字和相应的数据,并在一段时间内建立请求吗?如果您考虑幂等性,那么如果请求已经被接收,那么每个数据突发都不会改变请求(拉,拉!)随着时间的推移,android应用程序可以发送/接收较小的请求块。如果信号保持不变,就继续发送。如果发生故障,请注意请求的哪些部分尚未发送,并在信号返回时重试。
因此,您以拼图方式发送请求,但是服务器知道如何以正确的顺序重新组装各个部分。结尾处的停止字告诉服务器ok此请求已完成,请继续处理它。在该字到达之前,服务器可以存储未完成的请求,或者如果没有更多的数据进入,则将其丢弃。
如果服务器使用id响应第一个请求块,应用程序可以使用该id获取响应,并继续尝试,直到完整的响应返回,此时服务器可以从其jigsaw缓存中删除响应。不过,还有大量的工作要做。
https://stackoverflow.com/questions/49903628
复制相似问题