gpt4 book ai didi

java - 跨平台发送大量数据的好方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 01:39:14 24 4
gpt4 key购买 nike

我们需要在非常不同的软件组件(从嵌入式设备到 Web 服务)之间发送数据。出于各种原因(事实上我们得到了 Mosquitto 在最有问题的平台上编译而不是其中最少的),我们决定使用 MQTT 消息代理协议(protocol)。这是一个相当轻量级的协议(protocol),它为要发布的消息提供应用程序定义的有效载荷。我们现在需要找到一种方法来指定该有效负载中的数据

目前的想法是使用一些现有的IDL 带来至少从 C++Java 访问数据的能力,理想情况下还有 Python 和其他语言。如果这些平台的编码/解码 API 可用于将数据序列化为 MQTT 协议(protocol)的有效负载,以及将其反序列化为 MQTT 协议(protocol)的有效负载,那么这将是理想的。

有这样的东西吗?

注意:

  • 会有很多数据。事实上,我们可能需要将其从当前规范中删除,以避免网络拥塞。 XML 格式对此可能过于冗长。
  • 格式应该易于编码和解码,因为在嵌入式平台上 CPU 份额很重要。 (这可能是不通过网络发送 XML 的另一个原因。)
  • 如果此所需的任何组件(IDL 编译器等)不是跨平台的,它应该在 Windows 上运行。
  • 我不是网络专家。如果 IDL 是过去十年的事情,技术已经发展,并且有更好的方法通过网络在平台之间移动数据,请继续并提出建议。

最佳答案

您可以使用 google protocol buffers(本质上这是一种“二进制”XML,开销要少得多)。

据我所知,存在 c++、java 和 python 库。

对于嵌入式 c++ 系统,您可以使用 NanoPb 实现,它是纯 C 代码中的轻量级谷歌 Protocol Buffer 实现(我们目前在嵌入式系统中使用该库)

参见 https://developers.google.com/protocol-buffers/

关于java - 跨平台发送大量数据的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com