#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 выглядит потрясающе. Я не знал об этом, хороший совет!