2012-03-23 12 views
12

Załóżmy, że mam program C++ uruchomiony na tym samym serwerze z serwerem sieciowym przez Node.js.Nodejs komunikuje się z programem C++?

Program Cpp utrzymuje kolejkę, co chcę zrobić z Node.js jest, przeciągnij niektóre dane do kolejki.

Jaki jest najlepszy sposób na zrobienie tego?

Co jest lepsze? gniazda lub IPC?

(OS Linux)

+0

Użyliśmy 'dbus' do komunikacji między C++ i nodejs w naszym systemie embedded. DBUS jest domyślną magistralą na systemach Linux. –

Odpowiedz

10

Jeśli używasz Linuksa, chciałbym zaproponować UNIX-domain sockets. Zasadniczo zapewniają one wysoką wydajność protokołu IPC za pomocą interfejsu gniazda BSD, dzięki czemu można łatwo przełączać gniazda TCP później, jeśli zachodzi potrzeba przeniesienia aplikacji C++ (lub node.js) na inny komputer.

Są to already supported by node.js i trzeba tylko zmienić kod otwierający gniazdo. Wiele aplikacji, w tym MySQL, łatwo je odbarwiać w pliku konfiguracyjnym.

1

użyję gniazda, są czyste i łatwe w użyciu

+0

, ale w rzeczywistości są na tym samym serwerze, zastanawiam się, że gniazdo może być wolne od rzeczy IPC, mam rację? –

+0

Zdecydowanie wolniej, ale przygotuje aplikację do skalowania, jeśli któreś z nich nie będzie już rezydować na tym samym serwerze. – luke14free

+0

@ luke14free: to zależy. Gniazda Unix mogą być szybsze niż zwykłe gniazda TCP. –

1

Jeśli chcesz użyć mechanizmu IPC, możesz rozważyć napisanie Node.js C++ module, a następnie użyć czegoś z biblioteki Boost.Interprocess do komunikacji z inną aplikacją.

Boost.Interprocess ma mechanizmy już zbudowane do udostępniania kontenerów z biblioteki standardowej. To także platforma krzyżowa, jeśli chcesz być w przyszłości otwarta na to.

Powiązane problemy