¿Qué protocolo debo usar para las interacciones rápidas de comando / respuesta?

StackOverflow https://stackoverflow.com/questions/1024403

  •  06-07-2019
  •  | 
  •  

Pregunta

Necesito configurar un protocolo para interacciones rápidas de comando / respuesta. Mi instinto me dice que solo forme un protocolo simple con cadenas ASCII separadas por CRLF, como cómo funciona SMTP o POP3, y lo canalice a través de SSH / SSL si necesito que esté asegurado.

Si bien podría hacer esto, preferiría construir sobre una tecnología existente para que las personas puedan usar una biblioteca amigable en lugar de la interfaz de biblioteca de socket que el sistema operativo les da.

Necesito ...

  • Comandos y respuestas que pasan datos estructurados de un lado a otro. (XML, expresiones S, no me importa).
  • La capacidad del servidor de hacer notificaciones no programadas al cliente sin ser encuestadas.

¿Alguna idea por favor?

¿Fue útil?

Solución

AMQP suena prometedor. Alternativamente, creo que XMPP admite mucho de lo que desea, aunque con bastante sobrecarga.

Dicho esto, dependiendo de lo que intente lograr, un protocolo ad hoc simple podría ser más fácil.

Otros consejos

Si solo desea solicitar / responder, HTTP es muy simple. Ya es un protocolo de solicitud / respuesta. El lado del cliente y el servidor se implementan ampliamente en la mayoría de los idiomas. Ampliarlo es bien entendido.

La forma más fácil de usarlo es enviar comandos al servidor como solicitudes POST y que el servidor envíe la respuesta en el cuerpo de la respuesta. También podría ampliar HTTP con sus propios verbos, pero eso haría que trabajar más aprovechara el almacenamiento en caché de servidores proxy y otra infraestructura que comprenda HTTP.

Si desea notificaciones asíncronas, consulte los protocolos pub / sub (implementaciones Spread, XMPP, AMQP, JMS o intermediarios comerciales de mensajes pub / sub como TibcoRV, Tibco EMS o Websphere MQ). El protocolo o implementación a elegir depende de las necesidades de confiabilidad, latencia y rendimiento del sistema que está construyendo. Por ejemplo, ¿está bien que se eliminen las notificaciones cuando la red está congestionada? ¿Qué sucede con las notificaciones cuando un cliente está fuera de línea? ¿Se descartan o se ponen en cola cuando el cliente se vuelve a conectar?

¿Qué tal algo como SNMP? No estoy seguro de si encaja exactamente con el modelo que usa su aplicación, pero admite notificaciones asincrónicas y de extracción (es decir, TRAP y GET).

Esa es una gran pregunta con una gran cantidad de variables a considerar, y la pregunta solo mencionó algunas de ellas: formato de paquete, mensajería asincrónica versus sincronizada y seguridad. Hay muchos, muchos otros en los que uno podría pensar. Sugiero leer una descripción de la pila de protocolos de 7 capas (OSI / ISO) y preguntarse qué necesita en esas capas y si desea construir esa capa u obtenerla en otro lugar. (Parece que le interesan principalmente las capas 6 y 7, pero también mencionó fragmentos de capas inferiores).

Piense también si se trata de una aplicación crítica para la seguridad o parte de un sistema con V & amp; V formal. Los sistemas de comunicación realmente buenos y confiables no son fáciles de diseñar; también un " de baja potencia " El protocolo puede poner una gran carga de codificación en la aplicación para recuperar errores.

Finalmente, sugeriría ver cómo otras aplicaciones similares a la suya hacen el trabajo (consultar código abierto, leer libros, etc.) También es útil la base de datos de la Oficina de Patentes de EE. UU., etc. uno puede obtener grandes ideas simplemente leyendo la descripción del problema de comunicación que intentaban resolver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top