我有两个在Linux上运行的进程,一个是NodeJs应用程序,另一个是C++应用程序。 NodeJs应用程序从也是NodeJS应用程序的服务器接收数据,现在该数据将由C++应用程序使用。在Linux上的两个应用程序之间共享数据
现在我正在将数据写入NodeJs应用程序的文本文件中,然后从C++应用程序中读取数据。但是这很慢,它也会导致问题,因为文件可以异步写入。
我的问题是什么是在这两个应用程序之间共享数据的最佳方式,同时牢记可以异步接收数据?
我有两个在Linux上运行的进程,一个是NodeJs应用程序,另一个是C++应用程序。 NodeJs应用程序从也是NodeJS应用程序的服务器接收数据,现在该数据将由C++应用程序使用。在Linux上的两个应用程序之间共享数据
现在我正在将数据写入NodeJs应用程序的文本文件中,然后从C++应用程序中读取数据。但是这很慢,它也会导致问题,因为文件可以异步写入。
我的问题是什么是在这两个应用程序之间共享数据的最佳方式,同时牢记可以异步接收数据?
在NodeJS中为C++应用程序创建REST API。 (C++客户端:https://github.com/mrtazz/restclient-cpp)。
例子:
var express = require('express');
var app = express();
app.get('/data', function (req, res) {
var dataObjectToSendHere = 'here';
res.json(dataObjectToSendHere);
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
使用套接字与本地主机,我认为是好的。
为了帮助你多一点,你需要的是件事情:从一个应用程序发送数据到另一个(你用什么文件了),以及异步从另一个信号一个进程(告诉它数据可用)。
您可以实际上是用文件做到这一点,但是不是只使用单个文件,而是每次使用多个文件时,每次有新数据。将它们写入其他进程监视更改的特殊目录中,当它检测到新文件时,它会简单地读取该文件并将其删除。
另一种方法是通过命名管道或套接字(本地(即AF_LOCAL
)或“普通”)建立更直接的连接。然后在可以处理信令和批量数据传输的TCP或UDP之上创建一个简单的协议。
当然,因为一个应用程序是一个node.js应用程序,您可以简单地使用类似REST的界面,并让其他程序轮询新数据。为此,您不需要任何类型的异步信号,而是使用node.js应用程序收集和缓存所有传入数据,并且当其他应用程序轮询数据时,您将传输自上次轮询以来到达的所有数据。
还有很多其他方法可以做到这一点,只需阅读我在评论中链接到的文章,即可详细了解所有这些文章。
执行[*进程间通信*](https://en.wikipedia.org/wiki/Inter-process_communication)的方法很多,而文件只是其中之一。 –