Przez "lokalny" rozumiem, że oba działają w tej samej podsieci, w większości przypadków w tym samym hoście/maszynie wirtualnej, dlatego niektóre standardowe międzyplatformowe mechanizmy RPC, takie jak SOAP, XML-RPC, CORBA itp. Wydają się niepotrzebne.Jakie są dobre alternatywy dla komunikacji między lokalnymi programami w języku C++ i Java?
Ładunek to głównie dane liczbowe (w większości tabelaryczne) z niewielką ilością metadanych (na przykład dostępne usługi danych, opis/typ danych itp.) Z C++ na język Java oraz zdarzenia konsoli/skryptów interfejsu użytkownika z języka Java do C++. Tak więc program C++ działa jak serwer, a program Java - klient.
Mogę wymienić kilka opcji (głównie z przeszukiwania tej wspaniałej witryny), ale nigdy nie widziałem ani jednego z nich w realnej sytuacji w trudnych warunkach, więc mam nadzieję, że ktoś, kto "tam był, zrobił to", może pouczaj mnie o zaletach i wadach opcji.
- wspólna pamięć
- rur, standardowe wejście/standardowe wyjście itp
- klienta struktura danych przez zwykłego gniazdka (UDP) (prawdopodobnie this question)
- wiadomości przez gniazda zwykłego może być buforem protokół pomocną, Thrift , JSON, itp (this answer, między innymi)
- Java RMI z C++ serwer RMI (this question)
- JNI (niektóre odpowiedzi w this question)
Jestem prawie pewien, że przegapiłem wiele opcji. Dziękuję wszystkim za pomoc!
Zmieniano: Zapomniałem wspomnieć, że wydajność nie jest głównym problemem, że nie oczekuje się, że przepustowość danych do być ogromny (serwer jest mocno bazy związany), ale byłoby to ważne, aby wiedzieć, czy stoi jedna opcja być znacznie szybszym lub wolniejszym. Na przykład, przypuszczam, że nic nie przebije pamięci współużytkowanej (jeśli zostanie to zrobione poprawnie).
Dzięki! Jak już powiedziałem, te dwa programy najprawdopodobniej znajdują się na tym samym hoście, więc byłbym bardzo wdzięczny, gdybyś mógł rozwinąć także opcje tego samego hosta. Jeśli chodzi o protokoły komunikacyjne, wiem, że każdy ma swoje wady i zalety, ale czy masz ulubioną własną? –
Jeśli chodzi o komunikację z tymi samymi hostami, w pierwszej kolejności skorzystam z Opcji 4, a następnie rozważę uczynienie jej bardziej złożoną, jeśli okaże się, że jest zbyt wolna. – Thilo