performance - Web 服务和套接字编程 - 本地更快

标签 performance web-services sockets rest

我创建了一个 android - 桌面套接字编程来传输数据。套接字通信是基于双工的,其中客户端在 Android 上,服务器在桌面上。一次可能有很多 Android 客户端连接到桌面服务器。该应用程序在某些方面运行良好,但我觉得有些问题是连接中断,因为我使用的是 WiFi,当需要传输大量数据时速度很慢。

最近我了解了 REST Web 服务,并且创建了一个应用程序,其中 Web 服务在本地桌面计算机上运行,​​Android 应用程序通过 HTTP POST 和 HTTP GET 连接到它,并从两侧传输数据同样好。

我想知道本地通信和批量数据交换是Socket编程好还是webservice好?哪一个更快?

谁能告诉我这个问题的解决方案吗?

最佳答案

套接字通常比 Web 服务更快。

  1. 当您掌握通信双方时,您可以拥有自己的数据格式,这比您使用 http 所允许的效率更高
  2. 根据您发送的内容,您可能有一个非常简单的消息结构,而 http 始终需要其 header ,例如,它添加要传输的数据
  3. 经典的http是为每个请求打开和关闭通信 channel ,效率相当低

但是,在最后一点上,由于您的 WiFi 连接速度缓慢且不稳定,因此针对每个请求重新连接也不错。

我建议您查看zmq ,它是一个用于在具有多种受支持拓扑的应用程序之间建立消息队列的库。有很多语言的绑定(bind),并且它也适用于 Android。您可能会发现它比普通套接字 + 您自己的消息协议(protocol)或 http 更好。

关于performance - Web 服务和套接字编程 - 本地更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19204601/

相关文章:

jquery - 获取文本框文本,javascript已更改

java - 享元 : Strings already use String pool : Does it makes sense to pool String objects for Flyweight?

java - 如何通过 Java Web 服务模拟 IMS 分段处理

ios - 在这里我无法显示从json解析得到的数据?

c++ - 如何使用客户端套接字绑定(bind)

javascript - 为什么在 Chrome 上在 `let` 循环中使用 `for` 这么慢?

python - 如何最有效地使用 collections.deque(popleft 与 appendleft)

java - JAX-RS @FormParam 一次用于所有方法

iphone - 在 iPhone 上发送 UDP 数据包在新的 3G 连接上失败,但在其他情况下有效

c - 唤醒阻塞在 accept() 调用上的线程