Устойчивость сложных объектов Java (SQLite, Serialization, JSON) и архитектура клиент-серверных приложений - PullRequest
0 голосов
/ 24 ноября 2011

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

Допустим, мне приходится иметь дело с несколькими моделями (класс, представляющий категорию) объектов, которые все наследуются от одного класса: они имеют общие атрибуты (такие как имя, прикрепленное изображение ...), но также и специфические свойства. Из-за этого вы можете понять, что я не могу позволить себе управлять одной конкретной таблицей для сопоставления каждого отдельного класса.

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

В настоящее время решением, использованным предыдущим разработчиком, было хранение данных непосредственно в поле TEXT в базе данных SQLIite в виде сериализованных объектов. Это должно быть хорошо на стороне сервера, но я читал, что обычная сериализация Java была очень медленной на платформе Android, хотя сейчас это не очень заметно, потому что я работаю с ~ 50 объектами, я искал более производительные альтернативы для будущее.

Я столкнулся с решением JSON, которое может легко обрабатывать сложные структуры, и библиотека Джексона кажется очень интересной с ее упрощенной привязкой данных к объектам POJO и ее известной производительностью. Но тогда, как я должен хранить мои объекты Json? Можно ли сохранить строку json в поле TEXT таблицы SQlite? Или лучше хранить их как файл .json для каждого объекта? Какой из них наиболее эффективен для последующего получения большого количества данных?

Кроме того, я думал, что JSON будет очень хорошим форматом обмена между клиентским приложением Android и моим сервером, который отвечает за обработку информации из сторонних веб-приложений apis и передачу этих данных с помощью веб-сервисов. (вместо того, чтобы пытаться реализовать какое-то RMI-подобное решение) Достаточно ли использования обычного Apache HTTPClient на Android для связи с сервером?

Для тех, кто успешно разработал клиент-серверное приложение (что мне кажется очень распространенным), это хороший подход для Android? Мне кажется, что с мобильными платформами вы не можете использовать тот подход, который вы узнали для более классического приложения J2EE и тому подобного ... Буду признателен за любые советы, потому что я студент и новичок в Android, которые действительно хотят улучшить свои навыки разработки мобильных приложений!

Спасибо:)

1 Ответ

2 голосов
/ 25 ноября 2011

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

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

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