![]() |
|||
|
Как работает SyncML-сервер
Что такое SyncML?
Транспортный уровень
Процесс синхронизации Медленная синхронизация используется при первом запуске, что вполне очевидно – клиент должен передать все данные на сервер и получить от сервера все имеющиеся у него данные, а так же, медленная синхронизация используется, если в предыдущий сеанс синхронизации произошла ошибка. При данном типе синхронизации сервер выполняет полное сравнение принятых данных с данными синхронизируемой базы. Правила сравнения зависят от типа данных и реализации логики сервера. Например, на сервере есть некоторый контакт, и похожий контакт поступил с телефона. Допустим, в контакте совпадают фамилия, имя и номер телефона, но есть различия в некоторых полях, тогда можно сделать вывод, что это тот же самый контакт. Данная ситуация называется конфликтом и имеет три варианта решения: используются данные клиента, используются данные сервера, данные объединяются и обновляются на сервере и клиенте. Сервер WAP4B позволяет установить для каждого устройства наиболее подходящую стратегию разрешения конфликтов. Результатом «медленной» синхронизации являются идентичные данные на сервере и на клиенте, а так же сервер и клиент сформируют информацию для выполнения быстрой синхронизации в следующем сеансе. Что это за информация? В первую очередь – это состояния всех объектов (далее, применительно к контактам/визиткам или событиям календаря). Например, если на сервер поступила новая визитка, то она получит статус «новая» и таковой она будет являться для последующей синхронизации с другими устройствами. Соответственно, есть ещё состояния «обновлённый» и «удалённый». Сервер запоминает все состояния и даты их изменений, поскольку у пользователя может быть несколько устройств (а в данный момент он синхронизировал только одно). Клиент же, непосредственно среагирует на изменение состояния объёкта на сервере, т.е. если та же визитка удалена на сервере, то телефон так же её удалит её из своей базы. Ну и, пожалуй, самый важный момент, без которого будет невозможна быстрая синхронизация – это формирование локальных и глобальных идентификаторов, а так же связей между ними. Каждый объект клиента автоматически получает собственный локальный идентификатор, а объект на сервере – глобальный. Кроме того, сервер устанавливает взаимнооднозначное соответствие между всеми локальными и глобальными идентификаторами. Два типа идентификаторов нужно опять же по причине, что у пользователя может быть несколько устройств и для каждого устройства имеется свой локальный идентификатор объёкта. Это значит, что серверу не придётся в дальнейшем сравнивать каждый объект – достаточно знать локальный идентификатор. Быстрая синхронизация происходит значительно проще и потребляет на порядок меньше трафика, поскольку передаются только изменённые данные. И клиент и сервер помнят дату последней синхронизации. Когда клиент инициирует синхронизацию, он сообщает серверу, что случилось с данными с момента последней синхронизации (вот здесь и вступают в работу состояния объектов в сочетании с локальными идентификаторами). Т.е. клиент сообщает, что некоторый объект с его локальным идентификатором был удалён, другой объект изменён, а третий добавлен и в каждом случае с указанием даты. Серверу остаётся сравнить состояния тех же самых объёктов: новые – добавляем, удалённые – удаляем, изменённые - изменяем. Затем сервер отправляет свои изменения, ведь его данные мог изменить пользователь в результате синхронизации с другим устройством или, например, через WEB-интерфейс. Перейти к регистрации Авторизоваться Вернуться на главную |
|||
| © wap4b.ru 2006-2012 | |||