буфери протоколу google vs json vs XML [закрито]


230

Я хотів би знати достоїнства та недоліки

  • Буфери протоколів Google
  • JSON
  • XML

Я хочу реалізувати одну загальну основу для двох застосувань, одного в Perl і другого в Java. Таким чином, хотіли б створити загальний сервіс, який може використовуватися обома технологіями, тобто Perl та Java.

Обидва є веб-додатками.

Будь ласка, поділіться зі своїми цінними думками та пропозиціями щодо цього. Я бачив багато посилань на Google, але всі мають неоднозначну думку.


9
І ти думаєш, що тут може бути консенсус?
— Бармар


1
Дякую. Але хотілося б дізнатися більше протокольних буферів проти JSON.
— Маной Катірія

19
@Barmar Це не про консенсус, а про раціональний вибір, про плюси і мінуси, добре, що питання було задано ще до того, як мета-поліція почала знижувати якість вмісту ЗП.
— Борис Треухов

Раніше я заперечував проти того, щоб такі питання були довільно закриті. Але факт полягає в тому, що якби я консультувався з проектом, який потребував цього вибору, я хотів би отримати набагато більше інформації, ніж зазвичай з'являється в дописі SO; будь-яка порада, яку ви отримаєте тут, є анекдотичною і ґрунтується на майже повному ігноруванні вимог та обмежень вашого конкретного проекту.
— Майкл Кей

Відповіді:


279

Джсон

  • читабельна / редагована для людини
  • можна проаналізувати, не знаючи схеми заздалегідь
  • відмінна підтримка браузера
  • менш багатослівний, ніж XML

XML

  • читабельна / редагована для людини
  • можна проаналізувати, не знаючи схеми заздалегідь
  • стандарт для SOAP тощо
  • хороша підтримка інструментів (xsd, xslt, sax, dom тощо)
  • досить багатослівний

Протобуф

  • дуже щільні дані (невеликий вихід)
  • важко надійно розшифрувати, не знаючи схеми (формат даних внутрішньо неоднозначний, і потрібна схема для уточнення)
  • дуже швидка обробка
  • не призначений для людських очей (щільний двійковий)

Усі мають гарну підтримку на більшості платформ.

Особисто я сьогодні дуже рідко використовую XML. Якщо споживач - це браузер або публічний API, я зазвичай використовую json. Для внутрішніх API я прагну використовувати протобуф для продуктивності. Пропозиція як у відкритому 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 та протоколів.
— Пол,

3
@Marc Gravell: Як щодо сенсу сумісності вперед. Моє враження, що це одна з найбільших торгових точок протобуфа?
— Thomas Ahle

1
Ігорю Ганапольському, наскільки я розумію, що це в принципі неможливо, оскільки для протобуфів дуже мало необхідного розбору, тоді як фаза обробки тривала і неминуча для json.
— Жюль GM

3
Відзначимо, що ви можете використовувати схеми і для JSON.
— Ісус Ангуло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.