SyncML
» » SyncML

SyncML

14.12.2020


SyncML (от англ. Synchronization Markup Language — «язык разметки синхронизации») был создан для разработки единого протокола передачи данных для всех типов портативных устройств, таких как КПК, портативные ПК, пейджеры и мобильные телефоны. Созданный в феврале 2000, SyncML быстро охватил наиболее весомых производителей мобильных устройств и мобильного программного обеспечения, таких как Nokia, Ericsson, IBM, Lotus, Motorola, Palm, Psion, Starfish. SyncML призван решить вопросы синхронизации мобильных устройств с сетевыми данными.

SyncML использует разметку XML и различные протоколы для передачи данных. Реализация клиентских приложений для SyncML позволяет использовать WAP Binary XML для уменьшения размера пакетов передаваемых данных, тем не менее, использование WBXML не является обязательным. SyncML также способен восстановить связь между устройствами, если происходят обрывы соединения (при условии, что клиент и сервер поддерживают обрывы соединения). Кроме этого, SyncML эффективно работает с различными коммуникационными протоколами, такими как HTTP, Wireless Session Protocol, OBEX (Bluetooth, IrDA), SMTP, TCP/IP.

Программная структура SyncML основана на двух протоколах:

  • Протокол представления SyncML (SyncML Representation Protocol), который определяет формат представления SyncML-сообщений и описание внутренней конструкции работы SyncML.
  • Протокол синхронизации SyncML (SyncML Synchronisation Protocol), который определяет действия между SyncML-клиентом и SyncML-сервером.

SyncML поддерживает семь различных типов синхронизации:

  • Двусторонняя синхронизация (Two-way sync);
  • Медленная синхронизация (Slow sync);
  • Односторонняя синхронизация только от клиента (One-way sync from client only);
  • Обновление только от клиента (Refresh sync from client only);
  • Односторонняя синхронизация только от сервера (One-way sync from server only);
  • Обновление только от сервера (Refresh sync from server only);
  • Синхронизация при изменении серверных данных (Server-alerted sync).

SyncML не зависим от типов синхронизируемых данных, но обычно это данные в формате text/x-vcard (визитки), text/x-vcalendar (календарь/задачи), text/plain(заметки). Следует отметить, что первые два типа имеют регламентированные наборы полей, и каждое определённое устройство может поддерживать или не поддерживать некоторые поля. Несмотря на то, что существуют спецификации на vcard и vcalendar, они позволяют производителям устройств произвольно трактовать некоторые параметры. Протокол SyncML позволяет передавать данные о поддерживаемых форматах (поля, типы, размер, возможные значения и т. д.), но, как правило, эти данные не в полном объёме предоставляются устройством для однозначной интерпретации формата или существенно различаются по значениям между устройствами различных производителей, что создаёт определённые сложности для разработчиков SyncML-серверов.

Ключевые преимущества:

  • унификация — поддержка большого числа производителей устройств и сервисов;
  • минимальный объём передаваемых данных (быстрая синхронизация передаёт только информацию об изменениях на сервере и клиенте, сжатие на базе WBXML);
  • полнота синхронизируемых данных — клиент SyncML может предоставлять всю необходимую информацию «о себе»;
  • независимость от типа контента (можно синхронизировать практически любые данные).

Русскоязычные сервисы, поддерживающие SyncML