Межпроцессное взаимодействие между языками / операционными системами - PullRequest
4 голосов
/ 21 апреля 2009

Я ищу средство межпроцессного взаимодействия, которое можно использовать между языками и / или средами, работающими в одной или разных системах. Например, он должен позволять посылать сигналы между компонентами Java, C # и / или C ++, а также должен поддерживать некоторый механизм организации очередей. Единственное средство, которое, очевидно, не зависит от среды и языка, - это файлы, но я предполагаю, что это будет слишком медленно - и дисциплинированные очереди могут быть трудными для реализации. Многие другие средства, описанные в литературе, относятся только к одному языку или одной операционной системе. Предложения будут оценены!

Ответы [ 6 ]

4 голосов
/ 27 августа 2011

Говоря о гетерогенной архитектуре, транспортный уровень IMHO (как вы отметили «сокеты» как ответ) так же важен, как и уровень протокола (сериализация данных и т. Д.).

То, что я обнаружил, что возвращается во времени, - это обучающая библиотека программирования, которая объединяет сериализацию данных между различными языками программирования, операционными системами и архитектурами (от старшего к младшему / младшему к старшему, 16/32/64 бит и т. Д.) .

Мой любимый выбор - Буферы протокола Google , со встроенной поддержкой C ++, Python, Java и Сторонние дополнения с поддержкой огромное количество языки программирования / сценариев (включая Lua, Matlab, Ruby, Perl, R, Php, OCaml, Mercury, Erlang, Go, D, Lisp) и реализации RPC (например, Zeroc ICE ). Вне списка их поддерживают многие другие продукты, такие как Библиотека буферов протокола Google SWI-Prolog .

Альтернатива - Thrift с поддержкой различных языков программирования.

Для сравнения вы можете проверить: Экономия против Протобуфа против JSON .

4 голосов
/ 21 апреля 2009

Вам, вероятно, нужно посмотреть на что-то вроде ActiveMQ . В шаблонах EAI шина JMS интенсивно используется для интеграции нескольких модулей, написанных на нескольких разных языках и работающих на нескольких системах. Для меня такая Enterprise Message Bus, как ActiveMQ, соответствует вашим потребностям. Дайте мне знать, если вы ищете что-то еще.

-Shamik

3 голосов
/ 21 апреля 2009

Ну, вы могли бы определенно посмотреть на использование "сокетов".

1 голос
/ 21 апреля 2009

Оформить Очередь сообщений Microsoft или что-то похожее. Также обратите внимание на XML-RPC , SOAP , JSON и т. Д.

1 голос
/ 21 апреля 2009

Я бы использовал XML-RPC лично. Он прост в использовании на нескольких платформах и полностью соответствует всем вашим требованиям, любая очередь может быть обработана программным способом.

0 голосов
/ 07 августа 2014

Моя ставка на DBus [peer to peer] - с лучшим контролем потока. Он работает поверх RPC, поэтому существует множество языковых привязок. Конечно, RPC построен поверх локальных сокетов.

...