Я ищу средство межпроцессного взаимодействия, которое можно использовать между языками и/или средами, работающими в одной или разных системах. Например, он должен позволять отправлять сигналы между компонентами Java, C# и/или C++, а также должен поддерживать какой-либо механизм очередей. Единственным средством, которое, очевидно, не зависит от среды и языка, являются файлы, но я предполагаю, что это будет слишком медленно, а дисциплинированную организацию очередей может быть сложно реализовать. Многие другие средства, описанные в литературе, применимы только к одному языку или одной операционной системе. Предложения будут оценены!
Межпроцессное взаимодействие между языками/операционными системами
Ответы (6)
Ну, вы определенно могли бы взглянуть на использование «сокетов».
Вероятно, вам нужно взглянуть на что-то вроде ActiveMQ. В шаблонах EAI шина JMS активно используется для интеграции нескольких модулей, написанных на нескольких разных языках и работающих в нескольких системах. Для меня такая шина корпоративных сообщений, как ActiveMQ, соответствует вашим потребностям. Дайте мне знать, если вы ищете что-то еще.
-Шамик
Говоря о гетерогенной архитектуре, транспортный уровень 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.
Я бы лично использовал XML-RPC. Он прост в использовании на нескольких платформах и полностью отвечает всем вашим требованиям, любые очереди можно обрабатывать программно.
Посмотрите Очередь сообщений Microsoft или что-то подобное. Также ознакомьтесь с XML-RPC, SOAP, JSON и т. д.
Я делаю ставку на DBus [peer to peer] — у которого лучше управление потоком. Он работает поверх RPC, поэтому существует множество языковых привязок. RPC, конечно, построен поверх локальных сокетов.