บัฟเฟอร์โปรโตคอล google vs json vs XML [ปิด]


230

ฉันต้องการทราบข้อดีและข้อเสียของ

  • Google Protocol Buffers
  • JSON
  • XML

ฉันต้องการที่จะใช้หนึ่งกรอบทั่วไปสำหรับสองใบสมัครหนึ่งใน Perl และที่สองใน Java ดังนั้นต้องการสร้างบริการทั่วไปที่สามารถใช้ได้ทั้งเทคโนโลยีเช่น Perl และ Java

ทั้งสองเป็นเว็บแอปพลิเคชัน

โปรดแบ่งปันความคิดและข้อเสนอแนะที่มีค่าของคุณเกี่ยวกับสิ่งนี้ ฉันเห็นลิงก์จำนวนมากบน Google แต่มีความคิดเห็นที่หลากหลาย


9
และคุณคิดว่าน่าจะมีข้อสรุปที่นี่
Barmar


1
ขอบคุณมาก แต่ต้องการทราบเพิ่มเติมเกี่ยวกับ Protocol Buffers vs JSON
Manoj Kathiriya

19
@Barmar มันไม่เกี่ยวกับฉันทามติมันเป็นเรื่องของเหตุผลที่เลือกเหตุผลเกี่ยวกับข้อดีข้อเสียมันดีที่คำถามถูกถามก่อนตำรวจ meta เริ่มลดคุณภาพของเนื้อหา SO
Boris Treukhov

ฉันเคยคัดค้านอย่างยิ่งต่อคำถามดังกล่าวที่ถูกปิดโดยพลการ แต่ความจริงก็คือถ้าฉันให้คำปรึกษากับโครงการที่จำเป็นต้องเลือกตัวเลือกนี้ฉันจะต้องการข้อมูลมากขึ้นกว่าปกติจะปรากฏในโพสต์ SO; คำแนะนำใด ๆ ที่คุณจะได้รับที่นี่เป็นข้อมูลและขึ้นอยู่กับความไม่รู้เกือบสมบูรณ์ของข้อกำหนดและข้อ จำกัด ของโครงการเฉพาะของคุณ
Michael Kay

คำตอบ:


279

json

  • มนุษย์สามารถอ่าน / แก้ไขได้
  • สามารถแยกวิเคราะห์ได้โดยไม่ต้องรู้สคีล่วงหน้า
  • การสนับสนุนเบราว์เซอร์ที่ยอดเยี่ยม
  • verbose น้อยกว่า XML

XML

  • มนุษย์สามารถอ่าน / แก้ไขได้
  • สามารถแยกวิเคราะห์ได้โดยไม่ต้องรู้สคีล่วงหน้า
  • มาตรฐานสำหรับสบู่ ฯลฯ
  • รองรับการใช้เครื่องมือที่ดี (xsd, xslt, sax, dom, ฯลฯ )
  • สวย verbose

protobuf

  • ข้อมูลหนาแน่นมาก (เอาต์พุตขนาดเล็ก)
  • ยากที่จะถอดรหัสอย่างสมบูรณ์โดยไม่ต้องรู้สคีมา (รูปแบบข้อมูลชัดเจนภายในและต้องการสคีมาเพื่อชี้แจง)
  • การประมวลผลที่รวดเร็วมาก
  • ไม่ได้มีไว้สำหรับดวงตาของมนุษย์ (ไบนารีหนาแน่น)

ทุกคนมีการสนับสนุนที่ดีในแพลตฟอร์มส่วนใหญ่

โดยส่วนตัวแล้วฉันไม่ค่อยใช้ XML ในปัจจุบัน หากผู้บริโภคเป็นเบราว์เซอร์หรือ API สาธารณะฉันมักจะใช้ json สำหรับ API ภายในฉันมักใช้ protobuf เพื่อประสิทธิภาพ การเสนอทั้งแบบสาธารณะ API (ผ่านทางส่วนหัวหรือจุดปลายแยก) ทำงานได้ดีเช่นกัน


8
XML นั้นทำงานถอดรหัสได้มากกว่า แต่การตรวจสอบความถูกต้องอาจเป็นข้อได้เปรียบที่สำคัญเหนือ JSON การตรวจสอบ XML ของคุณด้วยสคีมาก่อนที่คุณจะประมวลผลธุรกรรมการชำระเงินที่มีอยู่จะช่วยเพิ่มความทนทานให้กับคุณ
สำเนาถึง

11
XML <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>ยังช่วยให้รูปแบบการเล่าเรื่องที่ข้อความจะสลับกับการรวมแท็กเช่น นี่เป็นคุณลักษณะเฉพาะของ XML เมื่อเปรียบเทียบกับ JSON และ Protocol Buffers
พอล

3
@Marc Gravell: วิธีการในแง่ของความเข้ากันได้ไปข้างหน้า เป็นความประทับใจของฉันหรือไม่ว่านี่เป็นหนึ่งในจุดขายที่ยิ่งใหญ่ของ protobuf?
โทมัส Ahle

1
Igor Ganapolsky เป็นความเข้าใจของฉันว่านี่เป็นไปไม่ได้ในเชิงแนวคิดเนื่องจากไม่มีการแยกวิเคราะห์ที่จำเป็นสำหรับ protobuffs ในขณะที่ขั้นตอนการประมวลผลยาวและหลีกเลี่ยงไม่ได้กับ json
Jules GM

3
เพียงพูดถึงว่าคุณสามารถใช้สกีมากับ JSON ได้เช่นกัน
Jesus Angulo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.