Веб-службы Android и AppEngine: Json… RPC, REST … буферы протокола?

#java #android #json #rest #protocol-buffers

#java #Android #json #rest #буферы протокола

Вопрос:

Я работаю над веб-сервисом, доступ к которому будет осуществляться из приложения для Android. Проведя некоторое исследование о том, какая технология является лучшей, я остался несколько сбит с толку и ошеломлен вариантами.

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

Я пробовал gson на стороне Android, и он отлично работает. Но потом я прочитал о буферах протокола, и это кажется еще более эффективным, я не уверен, что это существенная разница. Также я не уверен, использовать ли RPC или REST.

Ответ №1:

Что касается эффективности, буферы протокола, вероятно, будут более эффективными, чем любая реализация JSON, хотя и не обязательно в такой степени, как вы думаете. GSON не особенно быстр, но библиотека Jackson может почти конкурировать с большинством двоичных сериализаторов (Jackson в 2-4 раза быстрее, чем GSON в большинстве ситуаций, и в 10-20 раз быстрее в UTF-8, потому что у него есть специальный код для UTF-8).

Но я бы все равно использовал буферы протокола поверх любой библиотеки JSON из-за модели программирования. В большинстве библиотек JSON вам приходится проверять структуру сообщения вручную. С помощью буферов протокола вы указываете структуры сообщений декларативно, и библиотека позаботится о структурной проверке за вас (хотя все равно будут вещи, которые вам нужно проверить вручную).

Другие библиотеки, подобные буферам протокола: Apache Avro, Apache Thrift.

Библиотека Protostuff использует модель данных буферов протокола (поэтому вы получаете структурную проверку бесплатно), но поддерживает сериализацию в JSON и YAML в дополнение к другим форматам. Это может быть полезно, если вы хотите, чтобы ваш сервис использовался кодом Javascript, где часто проще всего работать с JSON.

Комментарии:

1. Спасибо за эту информацию, это то, что я подозревал, но я нашел в Google несколько вещей об использовании буферов протокола. Было бы неплохо, если бы было больше примеров использования буферов протокола.

2. Библиотека Protostuff выглядит потрясающе. Я не знал об этом, хороший совет!