буферы протокола Google против json против XML [закрыто]

230

Я хотел бы знать достоинства и недостатки

  • Буфер протокола Google
  • JSON
  • XML

Я хочу реализовать одну общую платформу для двух приложений, одно на Perl и второе на Java. Итак, хотел бы создать общий сервис, который может использоваться обеими технологиями, т.е. Perl и Java.

Оба веб-приложения.

Пожалуйста, поделитесь со мной своими ценными мыслями и предложениями по этому вопросу. Я видел много ссылок на Google, но у всех были разные мнения.

Маной Катирия
источник
9
И вы думаете, что здесь может быть консенсус?
Бармар
1
Спасибо большое. Но хотелось бы узнать больше протокола буферов против JSON.
Маной Катирия
19
@ Barmar Речь идет не о консенсусе, а о рациональном выборе, о плюсах и минусах, хорошо, что вопрос был задан до того, как мета-полиция начала снижать качество контента SO.
Борис Треухов
Я имел обыкновение возражать против того, чтобы такие вопросы были произвольно закрыты. Но дело в том, что если бы я консультировался с проектом, который должен был сделать этот выбор, я хотел бы получить гораздо больше информации, чем обычно появляется в SO сообщении; Любой совет, который вы получите здесь, является анекдотичным и основан на практически полном незнании требований и ограничений вашего конкретного проекта.
Майкл Кей

Ответы:

279

Json

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

XML

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

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: Как насчет прямой совместимости. У меня сложилось впечатление, что это один из главных пунктов продажи протобуфа?
Томас Але
1
Игорь Ганапольский, насколько я понимаю, это практически концептуально невозможно, так как для протобаффов практически нет необходимости в синтаксическом анализе, в то время как фаза обработки является длительной и неизбежной для json.
Жюль GM
3
Просто отметим, что вы можете использовать схемы и с JSON.
Иисус Ангуло