プロトコルまたはメッセージ形式について尋ねていますか?データの形式を意味する場合、プロトコルという用語を誤って使用することがよくあります。多くの場合、区別が誰にも明確でないため、私は自分でこれを行います。
IoTで使用されるメッセージングプロトコルは、少なくともhttpよりもかなりコンパクトである傾向があり、メッセージングで重要な重要な機能(セッション、フロー制御、信頼性など)を提供します。メッセージ形式は、送信されるメッセージ内のデータです。これはあなたが尋ねていることだと思います。
最もコンパクトなメッセージ形式は、慎重に検討された手巻きバイナリ形式です。低帯域幅のシナリオで数バイトを送信し、それらのバイトがどのように見えるかを正確に知りたい場合によく使用されます。大きなメッセージの場合、デメリットは重大であり、一般に、すべてのコストを回避する必要があります。
多くの異なるデータシリアル化オプションについて詳細な評価を行いました。protobuf、messagepackはかなりコンパクトであると思っていましたが、それはそうでした。しかし、私の2番目の問題は、デバイス上のCを含む多くの異なるプラットフォームで維持され、利用可能なライブラリを見つけることでした。
驚くべきことに、私が決めた形式はgzip圧縮されたJSONでした。実装と理解が容易であり、どこでも実行でき、使用していたデータでは、他の方法とほぼ同じか、より小さくなりました。
また、TLSなどの安全なチャネルがある場合は、とにかくTLSハンドシェイクでデータの塊(> 6KB)を消費することに注意してください。
数年前、プロトコルバッファのような形式が支配的であることを期待していましたが、実際にはあまり起こりませんでした。おそらく、JSONを簡単に書き出して解析(および圧縮)できるためです。Flatbuffersの外観は気に入っていますが、利点はコンパクトであるよりも解析速度の方が大きいことです。
調査段階にいるので、それぞれの状況に典型的なデータを使用して、それぞれに少しのコードを記述し、いくつかの比較を行うことをお勧めします。開始時にハードデータがあると、選択の確認に役立ちます。