Bandingkan
CBOR vs MessagePack
CBOR dan MessagePack sama-sama menserialisasi nilai mirip JSON ke biner. CBOR menstandarkan tag protokol dan aturan pengodean deterministik; MessagePack menyediakan pengodean ringkas untuk objek umum.
Format mana yang sebaiknya dipilih?
Pertimbangkan CBOR jika protokol memerlukan tag standar IETF atau pengodean deterministik. Pilih MessagePack jika kompatibilitas aplikasi dan pustaka yang ada lebih penting. Uji rentang angka, ekstensi, normalisasi, dan perilaku antarimplementasi.
Cocok untuk CBOR
Pertukaran data terstruktur pada perangkat dan jaringan dengan sumber daya terbatas · Representasi data dalam COSE dan protokol IoT
- Mewakili data mirip JSON dalam bentuk biner yang ringkas
- Menggunakan tag standar atau buatan aplikasi untuk menjelaskan arti nilai
Cocok untuk MessagePack
Menserialisasi data mirip JSON dalam bentuk biner · Bertukar data terstruktur antar aplikasi yang kompatibel
- Mengodekan array, map, dan nilai dasar mirip JSON dalam bentuk biner
- Bertukar nilai ekstensi dan timestamp antar pustaka yang kompatibel
Informasi dasar
| Item | CBOR | MessagePack |
|---|---|---|
| Ekstensi | .cbor | .msgpack, .mpk |
| Tipe MIME | application/cbor | application/octet-stream |
| Penggunaan umum | Pertukaran data terstruktur pada perangkat dan jaringan dengan sumber daya terbatas · Representasi data dalam COSE dan protokol IoT | Menserialisasi data mirip JSON dalam bentuk biner · Bertukar data terstruktur antar aplikasi yang kompatibel |
| Cara membuka | Baca dengan pustaka atau decoder CBOR, lalu periksa notasi diagnostik atau tampilan mirip JSON. Perhatikan cara nilai yang tidak memiliki padanan langsung di JSON, seperti tag dan byte string, ditampilkan. | Baca dengan pustaka atau decoder yang mendukung MessagePack. Untuk memeriksa isinya, gunakan notasi diagnostik atau tampilan mirip JSON dan perhatikan cara data biner serta ekstensi ditampilkan. |
| Ekspor atau konversi | Saat mengonversi ke JSON, byte string dan nilai bertag mungkin memerlukan representasi khusus alat karena JSON tidak memiliki tipe yang setara. Untuk tanda tangan, hash, atau kunci cache, ikuti aturan encoding yang disepakati protokol, seperti encoding deterministik RFC 8949. | Saat mengonversi ke JSON, data biner dan ekstensi mungkin perlu diwakili sebagai array, string, atau pembungkus khusus alat karena JSON standar tidak memiliki tipe yang setara. Untuk konversi bolak-balik, uji tipe, rentang angka, timestamp, kunci map, dan ekstensi dengan data nyata. |
Pilih menurut penggunaan
Mewakili data mirip JSON dalam bentuk biner yang ringkas
Pertukaran data terstruktur pada perangkat dan jaringan dengan sumber daya terbatas · Representasi data dalam COSE dan protokol IoT
CBORMenggunakan tag standar atau buatan aplikasi untuk menjelaskan arti nilai
Pertukaran data terstruktur pada perangkat dan jaringan dengan sumber daya terbatas · Representasi data dalam COSE dan protokol IoT
CBORMengodekan array, map, dan nilai dasar mirip JSON dalam bentuk biner
Menserialisasi data mirip JSON dalam bentuk biner · Bertukar data terstruktur antar aplikasi yang kompatibel
MessagePackBertukar nilai ekstensi dan timestamp antar pustaka yang kompatibel
Menserialisasi data mirip JSON dalam bentuk biner · Bertukar data terstruktur antar aplikasi yang kompatibel
MessagePackPoin utama 1
CBOR menetapkan bilangan bulat, byte string, array, map, dan tag dalam RFC 8949. MessagePack menetapkan bilangan bulat, string, biner, array, map, dan tipe ekstensi yang ditentukan aplikasi.
Perbedaan lebih lanjutPoin utama 2
CBOR menetapkan syarat pengodean deterministik yang berguna untuk tanda tangan atau hash yang konsisten. Aplikasi MessagePack mungkin perlu menetapkan urutan kunci dan konvensi ekstensi sendiri.
Perbedaan lebih lanjutPerbedaan lebih lanjut
Pilih berdasarkan protokol dan ekosistem, bukan anggapan bahwa salah satunya selalu lebih kecil atau cepat. Tetapkan pemetaan tag, ekstensi, kunci map, angka, dan nilai opsional lalu uji payload nyata.
- Tag CBOR dapat menandai semantik nilai tingkat aplikasi dan RFC 8949 menjelaskan syarat pengodean deterministik. Ekstensi MessagePack membawa ID tipe dan byte yang ditentukan aplikasi.
- Keduanya tidak berbagi pengodean byte meskipun mewakili data serupa. Dekoder satu format tidak otomatis dapat membaca format lainnya.
- Konversi dapat mengubah lebar angka, tipe kunci, tag, atau nilai ekstensi. Tentukan pemetaan dan uji bolak-balik pada implementasi yang digunakan.
Pertanyaan umum
Apakah CBOR dan MessagePack kompatibel secara biner?
Tidak. Pengodean dan model ekstensinya berbeda; diperlukan konversi eksplisit atau definisi protokol bersama.