2012-04-04 4 views
2

Я создаю приложение для Android, такое как Android, которое должно работать, даже если связь данных временно потеряна.Общая архитектура для автономной синхронизации приложений для Android

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

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

Альтернативой этому является просто сохранение окончательных HTTP-запросов, которые используются для информирования сервера об изменениях. Преимущество такого подхода состоит в том, что ему требуется только одна таблица, просто хранить URL-адрес, запрашивать контент, метод и т. Д. Но могут быть некоторые вызовы, которые требуют выполнения кода для ответа, который будет реализован как анонимные внутренние классы , Единственная проблема с этим подходом, похоже, заключается в сериализации этих анонимных внутренних классов, чтобы их можно было загрузить из БД и выполнить даже после (возможного) перезапуска телефона.

Что было бы лучшим способом реализовать это? Вариант A или вариант B? И если вариант B, действительно ли возможно сериализовать и несериализировать анонимные внутренние классы (которые эффективно используются в качестве закрытий здесь)?

ответ

1

Для опции A вы можете рассмотреть CouchDB для обработки репликации устройства/сервера.

Couchdb on Android

Смежные вопросы