2011-11-23 15 views
7

Estoy buscando una buena forma de conectar dos sistemas: 1) una aplicación basada en Qt ejecutándose en Ubuntu y 2) una aplicación basada en Boost ejecutándose en otra máquina Ubuntu. Ambas aplicaciones usan una biblioteca común donde pondría el código de interfaz común. Me gustaría utilizar una interfaz de tipo RPC. Miré CORBA y D-Bus, pero me pregunto qué otras personas han usado o recomendarían.Qt y Boost RPC

Gracias de antemano.

Respuesta

4

Apache Thrift es un marco RPC entre idiomas desarrollado originalmente por Facebook. Un prototipo que escribí hace un tiempo lo usé, creo que fue bastante simple de usar (no recuerdo ningún problema). Sería una buena opción si luego puede extender el sistema con componentes escritos en otros idiomas.

0

El motor de comunicaciones de Internet (Ice) es un Mecanismo RPC moderno y actualizado que admite varios idiomas. Puede descargarlo here. Gran parte de las API de Ice se definen en Slice, que es el lenguaje de especificación para Ice.

Slice (Lenguaje de especificación para Ice) es el mecanismo de abstracción fundamental para separar interfaces de objeto de sus implementaciones. Slice establece un contrato entre el cliente y el servidor que describe los tipos y las interfaces de objetos utilizados por una aplicación. Esta descripción es independiente del lenguaje de implementación, por lo que no importa si el cliente está escrito en el mismo idioma que el servidor.

Las definiciones de corte se compilan para un lenguaje de implementación particular por un compilador, por ejemplo, para C++.

También puede usar XML-RPC. Es un mecanismo RPC ligero y fácil de usar. Puede obtenerlo here.

2

Usted podría considerar ØMQ. Es una biblioteca de mensajería multiplataforma que, entre muchas otras cosas, "automágicamente" maneja problemas de conexión (incluida la reconexión en caso de fallas). Hay enlaces en muchos idiomas, y la biblioteca czmq proporciona una agradable interfaz C de alto nivel para muchos usos comunes de ØMQ.

Puede usar fácilmente el patrón Solicitud-Respuesta para un marco RPC, pero cuando lea guide, puede encontrar que otros patrones son más apropiados.

Encontré un RPC framework construido en la parte superior de ØMQ, pero dado que al parecer está usando C++, esto probablemente no lo ayudará (excepto para fines de aprendizaje). Consulte también this question. Probablemente puedas enrollar fácilmente el tuyo, si quieres.

La licencia de ØMQ es "LGPLv3 +", que es básicamente LGPL con una excepción de enlace estático. czmq se está moviendo al MPLv2, por lo que no me sorprendería si ØMQ lo sigue pronto. Según un mensaje del creador de ØMQ, el MPLv2 es muy similar a la licencia "LGPLv3 +", pero es más aceptable para los abogados de empresa.

También podría considerar boost serialization para el código de su interfaz. Usamos czmq (incluido zbeacon para detección automática de nodos) junto con la serialización de refuerzo, y funciona muy bien. He utilizado XML-RPC en el pasado, y prefiero ØMQ para la funcionalidad de manejo de conexión que ofrece.