База данных iPhone и база данных сервера - iPhone обновляет только модификации - PullRequest
0 голосов
/ 04 мая 2010

У меня есть запрос. Прежде всего, давайте создадим поток приложений для iPhone, который есть в обычном приложении. (Приложение на основе контента)

  • Приложение запускает и проверяет доступность сети
  • Если сеть доступна - iPhone загружает данные с помощью веб-служб или API
  • Мы можем сохранить этот ответ (ответ веб-службы / ответ API) в файл * .plist.
  • Когда нам нужно обновить данные, снова вызывается веб-служба и снова сохраняются все данные * .plist file.

  • Теперь предположим, что - у меня есть таблица «Электронные книги» на сервере и в ней более 500 записей.

  • Вызов API / веб-службы даст ответ 500 записей.
  • ОК - в первый раз можно дождаться всех ответов (мы можем использовать LIBXML2 для кусков)
  • Но что, если мы часто скачиваем это с помощью веб-службы.

Здесь есть два недостатка

  • Wi-Fi ненужное использование
  • загрузка ЦП iPhone
  • Загрузка ЦП сервера.

Ты меня понимаешь?

Предположим, что на сервере нет изменений, почему iPhone нужно снова вызывать API. Означает, что в записях нет изменений, а в записях 500, как тогда зачем скачивать снова?

Позвольте мне еще раз уточнить - проблема.

Предположим, что

  • приложение имеет Сервер + база данных = Клиенты (500 записей в настоящее время)
  • есть 5 iPhone, которые получают эти данные
  • все айфоны скачали 500 записей в автономном режиме
  • Теперь сервер добавил новую запись 501
  • iPhone должен загрузить только 1 запись, а не 501.

Как это возможно?

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Вы можете добавить отметку времени для каждой записи. Эта временная метка обновляется каждый раз, когда на стороне сервера производится изменение, добавление или удаление.

При выполнении запроса вы предоставляете поле, указывающее последнюю метку времени, известную клиенту. Для первого запроса это будет что-то вроде Epoch. Для последующих запросов это будет последнее известное обновление.

Затем сервер должен будет отфильтровать записи, поэтому он возвращает только те записи, которые изменились с предоставленной отметки времени.

0 голосов
/ 04 мая 2010

Вы можете очень легко внедрить пейджинг в свое серверное приложение, чтобы позволить вашим клиентам ограничивать количество извлекаемых записей. Вы также можете реализовать некоторый уникальный идентификатор, который вы можете кэшировать на клиенте iPhone, а затем, когда вы запрашиваете обновление, вы отправляете уникальный идентификатор последнего элемента, который вы кэшировали. Когда ваш сервер отправляет ответ, он должен обслуживать только элементы, более новые, чем последний элемент, который вы кэшировали.

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