gpt4 book ai didi

c++ - 将数据从一个应用程序单向发送到另一个应用程序的最佳实践

转载 作者:行者123 更新时间:2023-11-28 04:07:17 24 4
gpt4 key购买 nike

让我解释一下我的情况:

我有一个 (c++) 模块,它以每秒 10 次的速度从应用程序 1 收集数据。

我有另一个 (nodejs) 应用程序 2,它需要从该模块获取数据。

我的问题是:从模块共享数据以便应用程序 2 可以读取它的最佳跨平台方式是什么?

我的技术是从模块写入一个 UDP 套接字,然后从应用程序 2 读取这个套接字。但由于我从未这样做过,所以我不确定这是最好的方法。

最佳答案

这取决于:

机器内

C++ 模块是否与 nodejs 应用程序在同一台机器上运行? 那么我认为最好的方法是将 C++ 模块编译并加载为 native nodejs 模块。因此,您的 C++ 应用程序将成为一个共享库,即 nodejs 的 DLL,它可以直接从 nodejs 调用,即 javascript 应用程序,例如,它可以通过 promise 押注普通的 javascript 对象。那么你应该使用 NAPI from nodejs ,可以找到我使用的构建高效模板的好方法 here .

与共享内存或消息管道等其他经典 IPC(进程间通信)技术相比,这应该更快更安全地使用。

机器间

但是,如果您的应用程序在不同的机器上运行,包括在同一物理设备(如虚拟机)上的不同机器,您需要某种网络方式。不同机器/不同物理计算机和不同机器/同一物理计算机之间的唯一区别是,在后一种情况下,您将使用所谓的环回地址,而不是特定的变量地址。但是从这里开始,它会非常广泛地确定哪种调用方式、对象序列化或传输协议(protocol)最适合您的情况,并且在很大程度上是基于意见的。

一些值得一提的是

  • HTTP with JSON(HTTP 表示 TCP,通常被误称为 REST)
  • Protobuf
  • 通过 boost ASIO 使用 UDP 或 TCP 增强串行

结论/建议

由于您已经在 nodejs 环境中,其中 HTTP/JSON 很常见,我会尝试将您的 C++ 模块打包到 nodejs native 模块中,即使它必须与另一台机器上的其他 nodejs 实例通信。但是 HTTP/JSON 使用 nodejs 更容易,你只需转发来自 C++ 模块的 javascript 对象。

或者您使用 boost beast 或 asio 作为原生 HTTP 方法,但这会消耗很多时间。

关于c++ - 将数据从一个应用程序单向发送到另一个应用程序的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58501803/

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