2008-12-09 17 views
6

Estoy tratando de encontrar un middleware de protocolo adecuado para mi próxima aplicación distribuida. He encontrado varias especificaciones en los últimos días y me preguntaba si me perdí una importante. Debe ser un protocolo binario, admitir RPC y opcionalmente tener implementaciones de código abierto en diferentes idiomas. Aquí está la lista de protocolos que encontré:protocolos binarios de propósito general

  • CORBA
  • ICE
  • AMQP
  • Thrift

Y esta es la lista de protocolos despedidos:

  • XML basado protocolos porque están basados ​​en texto (XML-RCP, SOAP, laminados a mano, etc.)
  • Protocol Buffers (código cerrado)
  • COM (sólo para Windows)
+0

¿Hay alguna razón por la que debe ser binario? – Skizz

+0

XML se puede codificar en un formato binario más eficiente en cuanto a espacio, consulte http://en.wikipedia.org/wiki/Binary_XML para conocer las opciones. – xahtep

+0

Parte de la comunicación probablemente tendrá lugar entre procesos en un solo host. XML (incluso xml comprimido) desperdiciará muchas cargas de tiempo de CPU – soulmerge

Respuesta

13

El proyecto Protocol Buffers definitivamente no es de fuente cerrada.

¿En qué idioma/plataforma está interesado?

que aunque hay talón de apoyo RPC de búferes de protocolo, Google hasn Lanzó su capa de RPC real, por lo que tendría que proporcionar la suya propia. Dado que básicamente pasaría un mensaje de solicitud y devolvería un mensaje de respuesta, no es que es difícil superponerlo sobre los protocolos existentes (por ejemplo, HTTP POST).

8

no creo Protocol Buffers son de código cerrado. La página implica de manera diferente, y hay descargas de fuente.

2

Puede consultar ASN.1.

Se utiliza para codificar y transmitir datos binarios en muchos otros protocolos (por ejemplo, SNMP, LDAP) aunque ASN.1 no define un protocolo de transporte.

+0

Incluso se puede usar para codificar adicionalmente XML: http://java.sun.com/developer/technicalArticles/xml/fastinfoset/ – xahtep

3

Posiblemente no sea el mejor candidato, pero para completar, me gustaría añadir que hay un binary encoding for XML.

3

Le sugiero que reconsidere los Buffers del Protocolo de Google. Hay muchas implementaciones de código abierto para todas las plataformas principales, incluyendo C++/Java/Python, una publicada por Google.

Como se mencionó anteriormente por Jon Skeet, la especificación PB no define el modelo RPC, pero es extremadamente fácil definir su propia RPC utilizando PB.

Como alternativa, podría echarle un vistazo a ASN.1. Hay un montón de aplicaciones que usan ASN.1.

0

Recomendaría probar RabbitMQ AMQP, y usar Buffers de Protocolo, XML, o algún otro formato de datos como JSON, a su gusto. Además de ser relativamente simple y fácil de usar, esto le permite mezclar y combinar estilos RPC y pubsub asincrónicos, y tiene una buena distribución en todos los idiomas, protocolos y plataformas. Pero puede no ser una buena opción para su problema, ¡todo depende de lo que esté tratando de hacer! Cheers, alexis

2

Joe Armstrong's UBF parece que no se ha puesto de moda, pero satisface tus necesidades con un diseño de buen gusto.

Cuestiones relacionadas