Czy pytasz o protokół lub format wiadomości ? Często niewłaściwie używamy terminu protokół, gdy mamy na myśli format danych. Robię to sam, często dlatego, że rozróżnienie nie jest jasne dla wszystkich.
Protokoły przesyłania wiadomości używane w IoT są zazwyczaj dość zwarte, przynajmniej bardziej niż http i oferują istotne funkcje, które są ważne w przesyłaniu wiadomości (sesje, kontrola przepływu, niezawodność itp.). Format wiadomości to dane w wiadomości, które zostaną wysłane. Zakładam, że o to pytasz.
Najbardziej kompaktowy format wiadomości to starannie przemyślany, ręcznie zwijany format binarny. Jest często używany w scenariuszach o niskiej przepustowości, gdy chcesz wysłać kilka bajtów i dokładnie wiedzieć, jak te bajty wyglądają. W przypadku większych komunikatów wady są znaczące i ogólnie należy za wszelką cenę unikać.
Przeszedłem szczegółową ocenę wielu różnych opcji serializacji danych. Spodziewałem się, że protobuf, pakiet wiadomości będzie dość zwarty, czym były. Jednak moim drugim problemem było znalezienie bibliotek, które były utrzymywane i dostępne na wielu różnych platformach, w tym C na urządzeniu.
Niespodziewanie formatem, który wybrałem, był skompresowany gzip JSON. Jest łatwy do wdrożenia i zrozumienia, działa wszędzie, a przy danych, których używałem, był mniej więcej taki sam lub mniejszy niż inne metody.
Uważaj również, że jeśli masz bezpieczny kanał, taki jak TLS, i tak zużyjesz porcję danych (> 6 KB) podczas uzgadniania TLS.
Kilka lat temu spodziewałem się, że dominują takie formaty jak bufory protokołów, ale tak naprawdę niewiele się wydarzyło. Prawdopodobnie z powodu łatwości, z jaką json może być zapisany i parsowany (i skompresowany). Podoba mi się wygląd Flatbufferów , ale zaletą jest bardziej szybkość przetwarzania niż kompaktowość.
Ponieważ jesteś na etapie dochodzenia, sugeruję, aby napisać trochę kodu na każdym z nich, używając danych typowych dla twojej sytuacji, i dokonać porównań. Posiadanie twardych danych na początku pomaga potwierdzić twoje wybory.