Qt and Boost RPC - PullRequest
       2

Qt and Boost RPC

7 голосов
/ 23 ноября 2011

Я ищу хороший способ соединения двух систем: 1) приложения на базе Qt, работающего на Ubuntu, и 2) приложения на основе Boost, работающего на другой машине с Ubuntu. Оба приложения используют общую библиотеку, в которую я бы поместил общий код интерфейса. Я хотел бы использовать интерфейс типа RPC. Я смотрел на CORBA и D-Bus, но мне интересно, что другие люди использовали или рекомендовали бы.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 23 ноября 2011

Apache Thrift - это многоязычная среда RPC, изначально разработанная Facebook.Прототип, который я написал некоторое время назад, использовал его, я думаю, он был довольно прост в использовании (я не помню никаких проблем).Было бы хорошим выбором, если позже вы захотите расширить систему компонентами, написанными на других языках.

2 голосов
/ 25 марта 2014

Вы можете рассмотреть ØMQ .Это кроссплатформенная библиотека обмена сообщениями, которая, помимо прочего, «автоматически» обрабатывает проблемы с подключением (включая повторное подключение в случае сбоев).Есть привязки на многих языках, и библиотека czmq предоставляет хороший высокоуровневый интерфейс C для многих распространенных применений ØMQ.

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

Я нашел RPC framework , построенный поверх ØMQ, нопоскольку вы, очевидно, используете C ++, это, вероятно, вам не поможет (кроме как в учебных целях).Смотри также этот вопрос .Возможно, вы могли бы довольно легко свернуть свое собственное, если хотите.

Лицензия ØMQ - "LGPLv3 +", которая в основном является LGPL с исключением статического связывания. czmq движется к MPLv2, поэтому я не удивлюсь, если ØMQ вскоре последует этому примеру.Согласно сообщению от создателя ØMQ, MPLv2 очень похож на лицензию "LGPLv3 +", но более приемлем для корпоративных юристов.

Вы также можете рассмотреть повышение сериализации для вашего кода интерфейса,Мы использовали czmq (включая zbeacon для автоматического обнаружения узлов) вместе с расширенной сериализацией, и она работает очень хорошо.В прошлом я использовал XML-RPC , и я очень предпочитаю ØMQ из-за функциональности обработки соединений, которую он предлагает.

0 голосов
/ 25 марта 2014

Internet Communications Engine (Ice) - это современный и современный механизм RPC, который поддерживает множество языков. Вы можете скачать его здесь . Большая часть API Ice определена в Slice, который является языком спецификации для Ice.

Slice (язык спецификации для Ice) - это основной механизм абстракции для отделения интерфейсов объектов от их реализаций. Slice устанавливает контракт между клиентом и сервером, который описывает типы и интерфейсы объектов, используемые приложением. Это описание не зависит от языка реализации, поэтому не имеет значения, написан ли клиент на том же языке, что и сервер.

Определения фрагментов компилируются для конкретного языка реализации компилятором, например для C ++.

Вы также можете использовать XML-RPC. Это легкий и простой в использовании механизм RPC. Вы можете получить это здесь .

...