2012-03-23 5 views
12

Node.js가 웹 서버와 동일한 서버에서 실행중인 C++ 프로그램이 있다고 가정합니다.Nodejs가 C++ 프로그램과 통신합니까?

Cpp 프로그램은 큐를 유지 관리합니다. Node.js로 수행 할 작업은 큐에 일부 데이터를 가져 오는 것입니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

어느 것이 더 낫습니까? 소켓이나 IPC?

(OS는 리눅스입니다)

+0

임베디드 시스템에서 C++과 nodej 사이의 통신에'dbus '를 사용했습니다. DBUS는 리눅스 시스템의 기본 버스입니다. –

답변

10

를 사용하여 깨끗하고 쉽게, 소켓을 사용하는 거라고, 나는 UNIX-domain sockets을 건의 할 것입니다. 기본적으로 BSD 소켓 인터페이스를 사용하여 IPC의 고성능을 제공하므로 나중에 C++ (또는 node.js) 응용 프로그램을 다른 컴퓨터로 이동해야하는 경우 TCP 소켓을 쉽게 전환 할 수 있습니다.

그들은 already supported by node.js이며 소켓을 여는 코드 만 변경해야합니다. MySQL을 포함한 많은 응용 프로그램이이를 구성 파일에서 쉽게 추상화합니다.

1

나는 그들이 당신이 리눅스를 사용하는 경우

+0

하지만 실제로는 같은 서버에 있습니다. 소켓이 IPC보다 느릴지 궁금합니다. 맞습니까? –

+0

확실히 느리지 만 언젠가 두 서버가 동일한 서버에 더 이상 존재하지 않을 경우 응용 프로그램을 확장 할 준비를합니다. – luke14free

+0

@ luke14free : 그게 달려 있습니다. 유닉스 소켓은 일반 TCP 소켓보다 빠를 수 있습니다. –

1

IPC 메커니즘을 사용하려는 경우 Node.js C++ module을 작성한 다음 Boost.Interprocess 라이브러리의 내용을 사용하여 다른 앱과 통신 할 수 있습니다.

Boost.Interprocess에는 컨테이너를 표준 라이브러리에서 공유하기위한 메커니즘이 이미 구축되어 있습니다. 당신이 미래에 그것에 열려 있기를 원한다면 그것도 크로스 플랫폼.

관련 문제