protokol google buffer vs json vs XML [ditutup]

230

Saya ingin tahu kelebihan & kekurangan dari

  • Google Protocol Buffer
  • JSON
  • XML

Saya ingin menerapkan satu kerangka kerja umum untuk dua aplikasi, satu di Perl dan kedua di Jawa. Jadi, ingin membuat layanan umum yang dapat digunakan oleh kedua teknologi yaitu Perl & Java.

Keduanya adalah aplikasi web.

Tolong beri tahu saya pemikiran & saran Anda yang berharga tentang ini. Saya telah melihat banyak tautan di google tetapi semuanya memiliki pendapat yang beragam.

Manoj Kathiriya
sumber
9
Dan Anda pikir mungkin ada konsensus di sini?
Barmar
1
Terima kasih banyak. Tetapi ingin tahu lebih banyak Protokol Buffer vs JSON.
Manoj Kathiriya
19
@Barmar Ini bukan tentang konsensus, ini tentang pilihan rasional, tentang pro dan kontra, ada baiknya pertanyaan diajukan sebelum polisi meta mulai menurunkan kualitas konten SO.
Boris Treukhov
Dulu saya sangat menentang pertanyaan seperti itu ditutup secara sewenang-wenang. Tetapi faktanya adalah, jika saya berkonsultasi dengan proyek yang perlu membuat pilihan ini, saya ingin lebih banyak informasi daripada yang biasanya muncul dalam posting SO; setiap saran yang akan Anda dapatkan di sini adalah anekdotal dan didasarkan pada ketidaktahuan yang hampir lengkap tentang persyaratan dan kendala proyek tertentu Anda.
Michael Kay

Jawaban:

279

Json

  • dapat dibaca / diedit oleh manusia
  • dapat diuraikan tanpa mengetahui skema sebelumnya
  • dukungan browser yang sangat baik
  • kurang verbose dari XML

XML

  • dapat dibaca / diedit oleh manusia
  • dapat diuraikan tanpa mengetahui skema sebelumnya
  • standar untuk SOAP dll
  • dukungan tooling yang baik (xsd, xslt, sax, dom, dll)
  • cukup verbose

Protobuf

  • data yang sangat padat (output kecil)
  • sulit untuk didekodekan dengan kuat tanpa mengetahui skema (format data ambigu secara internal, dan perlu skema untuk menjelaskan)
  • pemrosesan sangat cepat
  • tidak ditujukan untuk mata manusia (biner padat)

Semua memiliki dukungan yang baik di sebagian besar platform.

Secara pribadi, saya jarang menggunakan XML hari ini. Jika konsumen adalah browser atau API publik saya cenderung menggunakan json. Untuk API internal saya cenderung menggunakan protobuf untuk kinerja. Menawarkan keduanya di API publik (baik melalui tajuk, atau titik akhir yang terpisah) juga berfungsi dengan baik.

Marc Gravell
sumber
8
XML lebih banyak pekerjaan untuk memecahkan kode, tetapi validasi dapat menjadi keuntungan utama atas JSON. Memvalidasi XML Anda dengan skema sebelum Anda memproses transaksi pembayaran yang dikandungnya memberi Anda lapisan kekokohan ekstra.
CC.
11
XML juga memungkinkan gaya naratif di mana teks berganti-ganti dengan tag seperti inklusi <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Ini adalah fitur unik XML bila dibandingkan dengan JSON dan Protokol Buffer.
Paul
3
@Marc Gravell: Bagaimana dengan kompatibilitas ke depan. Ini kesan saya bahwa ini adalah salah satu nilai jual besar protobuf?
Thomas Ahle
1
Igor Ganapolsky adalah pemahaman saya bahwa ini hampir tidak mungkin secara konseptual, karena ada sangat sedikit atau tidak ada penguraian yang diperlukan untuk protobuffs, sementara fase pemrosesan panjang dan tak terelakkan dengan json.
Jules GM
3
Hanya untuk menyebutkan bahwa Anda dapat menggunakan skema dengan JSON juga.
Jesus Angulo