Межпроцессное взаимодействие между языками/операционными системами

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


ipc
person Paul Morrison    schedule 21.04.2009    source источник


Ответы (6)


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

person Community    schedule 21.04.2009

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

-Шамик

person Shamik    schedule 21.04.2009

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

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

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

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

Для сравнения вы можете проверить: Thrift против Protobuf против JSON.

person Grzegorz Wierzowiecki    schedule 27.08.2011

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

person Shane C. Mason    schedule 21.04.2009

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

person Kasprzol    schedule 21.04.2009

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

person resultsway    schedule 07.08.2014
comment
Приятно видеть еще один ответ через 5 лет! Вероятно, DBus не существовало, когда я впервые задал этот вопрос! Спасибо - person Paul Morrison; 08.08.2014
comment
что ты в итоге использовал? - person resultsway; 13.08.2014
comment
Использовались розетки в то время для довольно специфической работы. Боюсь, с тех пор я им не пользовался, так как необходимости больше не возникало. Если это произойдет, я буду иметь в виду DBus! Ваше здоровье. - person Paul Morrison; 14.08.2014