NSMutableURLRequest при последовательности успеха другого NSMutableURLRequest

По сути, я хочу реализовать функциональность SYNC; где, если подключение к Интернету недоступно, данные сохраняются в локальной базе данных sqlite. Всякий раз, когда доступно подключение к Интернету, SYNC вступает в действие.

Теперь, скажем, например; 5 записей хранятся локально, а затем доступно подключение к Интернету. Я хочу, чтобы сервер обновлялся. Итак, что я делаю в настоящее время:

  1. Отправьте первую запись на сервер.
  2. Дождитесь успеха первого запроса.
  3. Отправьте локальное уведомление NSNotification в процедуру, что первая запись была обновлена ​​​​на сервере, и теперь можно отправлять второй запрос.
  4. Подпрограмма запускает второй почтовый запрос на сервере и так далее...

Вопрос: Является ли этот подход правильным и достаточно эффективным для реализации функциональности SYNC? ИЛИ что-нибудь, что я должен изменить в нем ??

ПРИМЕЧАНИЕ. Количество записей, подлежащих СИНХРОНИЗАЦИИ, не ограничено.


person viral    schedule 11.02.2013    source источник


Ответы (1)


Ну, это зависит от требований к данным, которые вы сохраняете. Если это только для резервного копирования, то вы должны быть в порядке. Если 5 записей каким-то образом зависят друг от друга, и вам нужно получить доступ к этим данным с другого устройства/приложения, вы должны позаботиться на стороне сервера о том, чтобы были записаны либо все 5 записей, либо ни одной. В противном случае у вас будет противоречивое состояние, если будет записано только 3. Если другие пользователи также одновременно читают/записывают эти данные на сервере, вам необходимо реализовать некоторую блокировку всех записей перед записью, а также решить, как обрабатывать конфликты, когда кто-то пытается перезаписать чьи-то изменения.

person Daniele Bernardini    schedule 12.02.2013
comment
Вы имеете в виду атомарность и параллелизм, верно. Понял вашу точку зрения, сэр. - person viral; 12.02.2013
comment
Извините за слишком длинный ответ, я не знал, знаете ли вы эти понятия ;-) Рад, что смог помочь. - person Daniele Bernardini; 12.02.2013