c# java android xmpp mqtt

c# - MQTT vs. XMPP ¿Qué debería elegir?



java android (3)

Visión de conjunto

Estoy enviando mensajes de un lado a otro entre un cliente (teléfono Android) y un servidor (servidor de Windows). Usando una conexión persistente sobre TCP, qué protocolo sería la mejor solución. Estoy buscando el rendimiento, la escalabilidad, el tamaño de los mensajes y la duración de la batería. Los mensajes deben llegar al destino en orden y no pueden ser duplicados.

MQTT

Esta parece ser la mejor solución, pero parece que hay pocos ejemplos de implementación grande con muchos usuarios. No estoy seguro si puedo integrar esto en el servidor de Windows, o si tendría que ser otra aplicación o servidor ejecutándose. Finalmente, parece haber una falta de información en general.

XMPP

Esto parece tener mucha implementación, ejemplos e incluso un libro:). Sin embargo, el objetivo principal parece ser para los clientes de mensajería instantánea y cosas como Google Talk. ¿Será esta una solución óptima para la mensajería entre el servidor y el cliente? Sé que actualmente XMPP se usa principalmente en arquitecturas cliente a servidor a cliente.

Por favor corrígeme si me equivoco y agradezco de antemano cualquier orientación.


Creo que probablemente estés corrigiendo tu evaluación de XMPP, ya que es un protocolo principalmente orientado al chat: también es bastante pesado y usa XML ampliamente, por lo que es prolijo. Sé que la gente de CEIT en la Uni de Brisbane ha estudiado específicamente las diferencias y los usos óptimos para los dos protocolos. MQTT es muy liviano y de baja potencia: se ha utilizado para aplicaciones de telemetría y sensores durante más de 10 años y ha sido implementado a gran escala por IBM y sus socios. La gente ahora está descubriendo que un protocolo simple como este es ideal para el desarrollo móvil.

¿Qué es exactamente lo que buscas lograr? El sitio mqtt.org tiene como objetivo proporcionar buenos enlaces al contenido. También hay canales de IRC y listas de correo al respecto. ¿Cómo podemos ayudar?


Creo que, en resumen, las ventajas de MQTT sobre XMPP son:

  • Capacidad de rendimiento: menos gastos generales, más peso ligero
  • Binario vs texto plano
  • QoS en su lugar (Fire-and-forget, At-least-once y Exactamente-Once)
  • Pub / Sub en su lugar (XMPP requiere la extensión XEP-0060)
  • No es necesario un analizador XML

Depende de lo que intenta hacer y del hardware que está ejecutando.

MQTT tiene un tráfico de permanencia muy bajo. XMPP es un protocolo de IM, y tiene una sobrecarga mucho, mucho más alta en el manejo de mensajes de presencia entre todos los clientes.

Si tiene una restricción de huella de memoria pequeña, tener que manejar el analizador XML puede imposibilitar el uso de XMPP.

Tenga en cuenta que MQTT significa Message Queue Telemetry Transport, es decir, es un protocolo de transporte y no define el formato del mensaje en absoluto; deberá proporcionarlo; XMPP es un protocolo de mensajería instantánea que define cuidadosamente todos los formatos de mensaje y requiere que todos los mensajes estén en XML.

Además de todo esto: MQTT es un protocolo de suscripción de publicación, XMPP es un protocolo de mensajería instantánea que se puede ampliar (utilizando XEP-0060) para admitir la suscripción de publicación. Debe considerar esto cuando diseñe su sistema.

Estamos encontrando que MQTT es el triunfador silencioso. Tu kilometraje puede ser diferente.

Todo depende ...

Sigue el reciente anuncio de LinkedIn donde hablan sobre el uso de MQTT en su aplicación móvil.

Cheers Mark

(Por cierto, Andy fue un poco apagado en su referencia a nosotros. Estamos en el Centro de Innovación y Tecnología Educativa (CEIT), la Universidad de Queensland, Brisbane, Australia)