Fragen Sie nach dem Protokoll oder dem Nachrichtenformat ? Wir verwenden den Begriff Protokoll oft fälschlicherweise, wenn wir das Format der Daten meinen. Ich mache das oft selbst, weil die Unterscheidung nicht jedem klar ist.
Messaging-Protokolle, die im IoT verwendet werden, sind in der Regel recht kompakt, zumindest mehr als http, und bieten wichtige Funktionen für das Messaging (Sitzungen, Flusskontrolle, Zuverlässigkeit usw.). Das Nachrichtenformat ist das der Daten in der Nachricht, die gesendet werden. Ich gehe davon aus, dass Sie danach fragen.
Das kompakteste Nachrichtenformat ist ein sorgfältig ausgewähltes handgerolltes Binärformat. Es wird häufig in Szenarien mit geringer Bandbreite verwendet, in denen Sie einige Bytes senden und genau wissen möchten, wie diese Bytes aussehen. Bei größeren Nachrichten sind die Nachteile erheblich und sollten im Allgemeinen um jeden Preis vermieden werden.
Ich habe eine detaillierte Bewertung zu vielen verschiedenen Serialisierungsoptionen für Daten vorgenommen. Ich erwartete, dass protobuf, messagepack ziemlich kompakt sein würde, was sie auch waren. Mein zweites Problem bestand jedoch darin, Bibliotheken zu finden, die auf verschiedenen Plattformen verwaltet wurden und verfügbar waren, einschließlich C auf dem Gerät.
Das Format, für das ich mich überraschenderweise entschieden habe, war gzip-komprimiertes JSON. Es ist leicht zu implementieren und zu verstehen, läuft überall und war mit den von mir verwendeten Daten ungefähr gleich oder kleiner als andere Methoden.
Beachten Sie auch, dass Sie bei TLS-Handshakes ohnehin einen Datenblock (> 6 KB) verbrauchen, wenn Sie einen sicheren Kanal wie TLS haben.
Vor ein paar Jahren hatte ich erwartet, dass ein Format wie Protokollpuffer dominiert, aber es ist nicht wirklich viel passiert. Wahrscheinlich wegen der Leichtigkeit, mit der JSON geschrieben und analysiert (und komprimiert) werden kann. Ich mag das Aussehen von Flachpuffern , aber der Vorteil liegt eher in der Analysegeschwindigkeit als in der Kompaktheit.
Da Sie sich in der Ermittlungsphase befinden, empfehlen wir Ihnen, jeweils ein bisschen Code mit den für Sie typischen Daten zu schreiben und einige Vergleiche anzustellen. Harte Daten zu Beginn helfen Ihnen, Ihre Auswahl zu bestätigen.