Qt и повышение RPC
Я ищу хороший способ подключения двух систем: 1) приложение на основе Qt, работающее на Ubuntu, и 2) приложение на основе Boost, работающее на другой машине Ubuntu. Оба приложения используют общую библиотеку, где я бы поставил общий код интерфейса. Я хотел бы использовать интерфейс типа RPC. Я посмотрел на CORBA и D-Bus, но мне интересно, что другие люди использовали или рекомендовали бы.
спасибо заранее.
3 ответов
Apache Бережливость - это кросс-языковая структура RPC, первоначально разработанная Facebook. Прототип, который я написал некоторое время назад, использовал его, я думаю, что он был довольно прост в использовании (я не помню никаких проблем). Это был бы хороший выбор, если позже вы захотите расширить систему компонентами, написанными на других языках.
вы могли бы рассмотреть ØMQ. Это межплатформенная библиотека обмена сообщениями, которая, среди прочего, "автоматически" обрабатывает проблемы с подключением (включая повторное подключение в случае сбоев). Есть привязки на многих языках, и czmq библиотека обеспечивает приятный интерфейс высокого уровня C для многих распространенных применений ØMQ.
вы можете легко использовать шаблон запроса-ответа для платформы RPC, но как Вы читаете руководство, вы можете найдите, что другие паттерны более уместны.
Я нашел RPC framework построенный поверх ØMQ, но поскольку вы, по-видимому, используете C++, это, вероятно, не поможет вам (кроме как для целей обучения). См. также этот вопрос. Вы, вероятно, можете легко свернуть свой собственный, если хотите.
лицензия ØMQ - " LGPLv3+", которая в основном является LGPL со статическим исключением ссылки. czmq движется к MPLv2, поэтому я не удивлюсь, если ØMQ вскоре последует его примеру. Согласно сообщению от создателя ØMQ, mplv2 очень похож на лицензию "LGPLv3+", но более приемлемо для корпоративных юристов.
вы также можете рассмотреть буст сериализация в коде интерфейса. Мы использовали czmq (включая zbeacon для автоматического обнаружения узлов) вместе с сериализацией boost, и он работает очень хорошо. Я использовал XML-RPC в прошлом, и я очень предпочитаю ØMQ для функциональность подключение к услугам.
Internet Communications Engine (Ice)-это современный и современный механизм RPC, который поддерживает многие языки. Вы можете скачать его здесь. Большая часть API Ice определена в Slice, который является языком спецификации для Ice.
Slice (язык спецификаций для Ice) является основным механизмом абстракции для отделения интерфейсов объектов от их реализаций. Slice устанавливает контракт между клиентом и сервером, который описывает типы и интерфейсы объектов, используемые приложением. Это описание не зависит от языка реализации, поэтому не имеет значения, написан ли клиент на том же языке, что и сервер.
определения среза компилируются для конкретного языка реализации компилятором, например, для C++.
вы также можете использовать XML-RPC. Это легкий и простой в использовании механизм RPC. Вы можете получить его здесь.