GSON против буфера протокола - PullRequest
6 голосов
/ 12 февраля 2011

Каковы плюсы и минусы буфера протокола (protobuf) над GSON?

В какой ситуации протобуф больше подходит, чем GSON?

Извините за очень общий вопрос.

Ответы [ 2 ]

11 голосов
/ 13 февраля 2011

И json (через библиотеку gson), и protobuf переносимы между платорами; но

  • protobuf меньше (пропускная способность) и дешевле (CPU) для чтения / записи
  • json доступен для чтения / редактирования человеком (protobuf является двоичным; его трудно разобрать без поддержки библиотеки)
  • protobuf тривиально объединить фрагменты - просто объединить
  • JSON легко передается клиентам веб-страницы
  • основная java-версия protobuf требует определения контракта (.proto) и генерации кода; Кажется, что gson допускает произвольное использование pojo (есть реализации protobuf, которые работают с такими объектами, но не для java afaik)

Если производительность имеет ключевое значение: protubuf

Для использования с веб-страницей (JavaScript) или для чтения человеком: json (возможно, через gson)

0 голосов
/ 13 марта 2012

Если вам нужна эффективность и кроссплатформенность, вы должны отправлять необработанные сообщения между приложениями, содержащие необходимую информацию и ничего более или менее.

Сериализация классов с помощью собственных механизмов Java, gson, protobufs или чего-либо другого, создаетданные, которые содержат не только информацию, которую вы хотите отправить, но также информацию о логических структурах / иерархиях структур данных, которые использовались для представления данных внутри вашего приложения.

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

...