将数据从一个应用程序单向发送到另一个应用程序的最佳做法
Best practice to unidirectionally send data from an application to another
让我解释一下我的情况:
我有一个 (c++( 模块,它以每秒 10 次的速度从应用程序 1 收集数据。
我有另一个 (nodejs( 应用程序 2,它需要从该模块获取数据。
我的问题是:从模块共享数据以便应用程序 2 可以读取它的最佳跨平台方法是什么?
我的技术是从模块写入 UDP 套接字,并从应用程序 2 读取此套接字。但是由于我从未这样做过,因此我不确定这是最好的方法。
这取决于:
机内
C++模块是否与 nodejs 应用程序在同一台机器上运行?那么在我看来最好的方法是将C++模块编译并加载为本机nodejs模块。因此,您的C++应用程序将成为共享库.DLL即nodejs,可以直接从nodejs(即javascript应用程序(调用,例如,该应用程序可以通过promise押注普通的javascript对象。然后你应该使用 nodejs 的 NAPI,我可以在这里找到我使用的构建高效模板的不错。
与其他经典的IPC(进程间通用(技术(作为共享内存或消息管道(相比,使用起来应该更快、更安全。
机器间
但是,如果您的应用程序在不同的计算机上运行,包括同一物理设备(如 VM(上的不同计算机,则需要某种网络方式。不同的机器/不同的物理计算机和不同的机器/相同的物理计算机之间的唯一区别是,在后一种情况下,您将使用所谓的环回地址,而不是特定的可变地址。但是从这里开始,它变得非常广泛,哪种调用样式,对象序列化或传输协议最适合您的情况,并且在很大程度上基于意见。
值得一提的是
- HTTP with JSON(HTTP意味着TCP,通常被误称为REST(
- 普罗托布夫
- 通过升压 ASIO 使用 UDP 或 TCP 提升串行
结论/建议
由于您已经在 nodejs 环境中,HTTP/JSON 很常见,因此我会尝试将您的C++模块打包在 nodejs 本机模块中,即使它必须与另一台机器上的其他 nodejs 实例进行通信。但是使用 nodejs 的 HTTP/JSON 要容易得多,您只需从 C++ 模块转发 javascript 对象即可。
或者你使用boost beast或asio,用于原生HTTP方法,但这会消耗很多时间。
- 如何将一个窗口保留在另一个应用程序窗口的前面
- 将库链接到另一个应用程序时,CMAKE 找不到库
- 调试控制台 ChessEngine.exe "used"在另一个应用程序(国际象棋 GUI)中
- 在 Windows 10 中将一个应用程序放在另一个应用程序前面
- 将数据从一个应用程序单向发送到另一个应用程序的最佳做法
- 当电子的窗口隐藏时如何激活另一个应用程序窗口
- 与 Python 中子进程中的另一个应用程序的交互式会话
- 将UWP应用程序的简单INT发送到另一个程序
- osX - 如何从我的 QT 应用程序启动另一个程序
- 来自另一个 IOS 应用程序的 IOS 应用程序命令
- 如何将Qt嵌入到另一个应用程序中(非阻塞方式)
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 调试从 Linux 中的另一个C++应用程序启动的 python 脚本
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 在Qt和C++中从另一个应用程序启动一个应用软件会产生问题
- Pantheios 不使用 MFC 应用程序写入一个文件(一个 exe + 两个 DLL)
- 控制台应用程序返回一个奇怪的值
- 如何将模板化类型的常量应用到另一个类型
- 简单的WinAPI应用程序有一个额外的控制台窗口
- 用c++插件为nodejs应用程序构建一个独立的可执行文件