Веб-сервис Android и AppEngine: Json ... RPC, REST ... буферы протокола? - PullRequest
3 голосов
/ 22 апреля 2011

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

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

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

1 Ответ

5 голосов
/ 26 апреля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...