Node.js가 웹 서버와 동일한 서버에서 실행중인 C++ 프로그램이 있다고 가정합니다.Nodejs가 C++ 프로그램과 통신합니까?
Cpp 프로그램은 큐를 유지 관리합니다. Node.js로 수행 할 작업은 큐에 일부 데이터를 가져 오는 것입니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
어느 것이 더 낫습니까? 소켓이나 IPC?
(OS는 리눅스입니다)
Node.js가 웹 서버와 동일한 서버에서 실행중인 C++ 프로그램이 있다고 가정합니다.Nodejs가 C++ 프로그램과 통신합니까?
Cpp 프로그램은 큐를 유지 관리합니다. Node.js로 수행 할 작업은 큐에 일부 데이터를 가져 오는 것입니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
어느 것이 더 낫습니까? 소켓이나 IPC?
(OS는 리눅스입니다)
를 사용하여 깨끗하고 쉽게, 소켓을 사용하는 거라고, 나는 UNIX-domain sockets을 건의 할 것입니다. 기본적으로 BSD 소켓 인터페이스를 사용하여 IPC의 고성능을 제공하므로 나중에 C++ (또는 node.js) 응용 프로그램을 다른 컴퓨터로 이동해야하는 경우 TCP 소켓을 쉽게 전환 할 수 있습니다.
그들은 already supported by node.js이며 소켓을 여는 코드 만 변경해야합니다. MySQL을 포함한 많은 응용 프로그램이이를 구성 파일에서 쉽게 추상화합니다.
나는 그들이 당신이 리눅스를 사용하는 경우
하지만 실제로는 같은 서버에 있습니다. 소켓이 IPC보다 느릴지 궁금합니다. 맞습니까? –
확실히 느리지 만 언젠가 두 서버가 동일한 서버에 더 이상 존재하지 않을 경우 응용 프로그램을 확장 할 준비를합니다. – luke14free
@ luke14free : 그게 달려 있습니다. 유닉스 소켓은 일반 TCP 소켓보다 빠를 수 있습니다. –
IPC 메커니즘을 사용하려는 경우 Node.js C++ module을 작성한 다음 Boost.Interprocess 라이브러리의 내용을 사용하여 다른 앱과 통신 할 수 있습니다.
Boost.Interprocess에는 컨테이너를 표준 라이브러리에서 공유하기위한 메커니즘이 이미 구축되어 있습니다. 당신이 미래에 그것에 열려 있기를 원한다면 그것도 크로스 플랫폼.
임베디드 시스템에서 C++과 nodej 사이의 통신에'dbus '를 사용했습니다. DBUS는 리눅스 시스템의 기본 버스입니다. –