Важным фактором при выборе является размер и сложность системы, которую вы реинжинирируете.Это широко распространенная система с множеством сложных сообщений?Это относительно небольшая система с небольшим количеством обыденных обменов сообщениями?
Для небольших систем я использовал только прокрутку собственных модулей связи на основе сокетов.Однако теперь я больше склоняюсь к ZeroMQ (без брокера) или STOMP (на основе текста).И есть некоторая поддержка Ada для них, zeromq-Ada и TOMI_4_Ada (поддерживает оба).
Несмотря на то, что они обрабатывают механику распределения, вам все равно придется обрабатыватьсериализация сообщений в транспортабельную форму.
Решения CORBA / PolyORB и DDS довольно тяжелые, но являются законченными решениями.Если вы не боитесь IDL и управляющих брокеров, они могут преуспеть в крупных распределенных системах.Да, может потребоваться, чтобы были созданы некоторые привязки Ada, но если вы можете получить заголовки C или API C для привязки, это, как правило, не так уж и плохо, если вы сосредоточитесь только на привязке необходимых функций и структур данных.Вместо создания всеобъемлющей привязки, свободно используйте непрозрачные и пустые указатели ( void_ptr , opaque_structure_def_ptr ) для структур и параметров, внутреннее содержимое которых вас не волнует.