Das Kefk Network Wiki befindet sich im Testbetrieb.


SyncML

Aus Kefk.

Wechseln zu: Navigation, Suche

SyncML (Synchronization Markup Language) ist ein plattformunabhängiger Standard der Open Mobile Alliance (OMA) zur Datensynchronisation. Bei den Daten kann es sich um beliebige Informationen handeln, wie z. B. so genannte PIM-Daten wie Adressen, Kalendereinträge, E-Mail-Nachrichten, etc. Um den Datenabgleich zwischen unterschiedlichen Endgeräten über Hardware- und Systemgrenzen hinweg, unabhängig vom Hersteller der verwendeten Komponenten, zu ermöglichen ist SyncML nicht als proprietäre Lösung, sondern als offener Standard ausgelegt. Auch ist SyncML nicht auf eine bestimmte Netzwerkarchitektur festgelegt, möglich ist z. B. eine Synchronisation über das Internet, das Mobilfunknetz oder zwischen zwei direkt miteinander verbundenen Endgeräten (TCP/IP, WSP oder Obex). Jedes beliebige Gerät mit einem SyncML-konformen Client kann Daten mit einem SyncML-fähigen Server abgleichen. Typische Endgeräte, zwischen denen Daten abgeglichen werden können, sind PC, Mobiltelefone und Handcomputer, mit jeweils noch unterschiedlichen möglichen Betriebssystemen.

Initiiert von den Unternehmen Nokia, Palm, IBM, Motorola, Ericsson, Symbian und Lotus, unterstützen mittlerweile die Produkte von über 250 namhaften Unternehmen diesen Standard. Für weitere Systeme, wie zum Beispiel PocketPC, gibt es SyncML Clients von Drittanbietern.

Inhaltsverzeichnis

Datensynchronisation

Datensynchronisation ist der Vorgang, bei dem zwei verschiedene Endgeräte (egal ob zum Beispiel Mobiltelefone, Handhelds oder Laptops bzw. PCs) Daten aneinander angleichen. Es wird dabei erkannt, welches Endgerät welche Daten hat, und auch kontrolliert, ob das jeweilige andere Endgerät diese Daten zusätzlich zu seinen eigenen besitzen will. Für den Fall, dass beide Endgeräte dieselben Dateninhalte haben, nur in unterschiedlichen Versionen (wenn z. B. eine Datei geändert wurde und somit neuer ist) kann definiert werden, welche Änderung beibehalten wird.

SyncML

Das Protokoll wurde auf Initiative führender Mobilfunkgeräte- und Computerhersteller entworfen, die sich Anfang 2000 zum SyncML-Konsortium zusammengeschlossen haben. Das Konsortium, das nun unter dem Dach der Open Mobile Alliance angesiedelt ist, besteht aus etwa 200 Firmen, darunter Ericsson, IBM, Lotus, Motorola, Nokia, Palm, Psion und Starfish. Die aktuelle SyncML Spezifikation ist in der Version 1.2.

Eine Spezialform von SyncML ist SyncML-DM (SyncML for Device Management). Das Protokoll definiert Fernwartungsfunktionen für mobile Endgeräte, mit dem ein Server Konfigurationen und Programm- und Firmwareaktualisierungen verwalten kann.

SyncML ist Beschreibungssprache und Protokollvereinbarung in einem. Die Sprache lehnt sich an den Standard XML an und erweitert ihn um genormte Funktionen für den Datenabgleich. Mittels SyncML-Nachrichten tauschen Clients mit einem Server Daten für die Synchronisation aus. Typischerweise initiiert immer der Client den Start einer Synchronisation. Erst eine zukünftige Version 1.3 soll ein echten Push vom Server zum Client ermöglichen. SyncML-Nachrichten ähneln in ihrer Struktur ganz normalen E-Mail-Nachrichten. Es gibt einen Kopf mit Empfänger und Senderinformationen und für den Server eindeutige Synchronisations-IDs. Dem Kopf folgen die Synchronisationsbefehle zum Hinzufügen, Löschen und Ersetzen von Daten.

Beispiel

Alice und Bob haben jeweils ein Mobiltelefon und sind als Außendienstmitarbeiter der selben Firma angestellt. Diese Firma verwaltet alle Kundendaten zentral an einem Server.

Alice lernt nun einen Kunden Dave kennen, und speichert dessen Telefonnummer und Namen in ihrem Handy ab. Das Handy von Alice übermittelt den neuen Eintrag automatisch an den zentralen Firmenserver, der nun den neuen Kontakt zentral speichert. Jetzt sendet der Server dem Mobiltelefon von Bob den Eintrag sofort zu, nachdem das Mobiltelefon von Alice den Eintrag dem Server bekannt gegeben hat.

Alice und Bob haben somit den gleichen Eintrag, obwohl ihn eigentlich nur Alice manuell eingetragen hat. Der Server hat somit die Dateninhalte zwischen Alice und Bob synchronisiert.

Natürlich funktioniert dies auch mit mehr als nur zwei Mitarbeitern.

Nun, was passiert, wenn jetzt Alice den vorher eingetragenen Kunden nach einem Jahr erneut trifft und erfährt dass dieser eine andere Telefonnummer hat? Natürlich wird Alice die alte Nummer von Dave auf die neue abändern.

Aber wie geht es nun weiter? Das Mobiltelefon von Alice wird dem zentralen Firmenserver die neue Nummer senden – dieser wird aber bemerken, dass er den Eintrag bereits hat, nur die Nummer eine andere ist. Logischerweise wird nun die Nummer auch am zentralen Firmenserver abgeändert, und daraufhin auch die Nummer auf Bobs Handy aktualisiert. Es haben somit wieder alle die neuesten, aktuellen Daten.

Herausforderungen

Aus der Funktionsweise von SyncML ergeben sich einige Probleme:

  • Woher weiß der zentrale Server wirklich 100%ig, welchen Kontakt er zu aktualisieren hat, wenn Alice die Nummer eines Kontakts an ihrem Handy ändert?
  • Wie kann sich der Server sicher sein, dass eine Änderung stattgefunden hat? D. h., welche Daten sollen verglichen werden?
  • Was passiert, wenn Alice und Bob innerhalb kurzer Zeit eine Änderung an der Telefonnummer von Dave durchführen? Wessen Nummer gilt dann als die „richtige“ und wird unter allen anderen Mitarbeitern synchronisiert?
  • Was soll geschehen, wenn ein neuer Mitarbeiter diverse Privatnummern in seinem Telefon einträgt – sollen diese wirklich auf den zentralen Server geladen werden, und somit allen anderen zugänglich sein?
  • Zusammengefasst: Wessen Daten sollen wann und zwischen wem synchronisiert werden?

Um diese Probleme lösen zu können, gibt es einige weiterführende Konzepte für den Synchronisationsprozess.

Konzepte

Folgende Konzepte müssen zwecks funktioneller Datensynchronisation implementiert werden:

  • ID handling: Dient zur eindeutigen Identifikation eines Datensatzes (z. B. Kontakteintrag). Diese wird durch eine eindeutige ID (identification data – meistens eine Nummer) realisiert. Somit können Server und Endgeräte (Handys etc.) erkennen, ob es sich bei z. B. zwei Kontakten auf zwei Geräten um dieselben handelt, oder nicht.
  • Change detection: Ab wann gilt ein Datensatz als geändert? Reicht es, wenn z.B. der Vorname anders geschrieben wird, oder muss schon die ganze Telefonnummer eine neue sein? Dies definiert die change detection, die meist auch mit einem timestamp (konkreter zeitpunkt – datum inkl. Uhrzeit) arbeitet, um den Zeitpunkt der Änderung zu definieren.
  • Modification exchange: Wie wird eine Änderung durchgeführt? Soll gelöscht, ersetzt oder neu erstellt werden? All dies wird hier definiert
  • Conflict detection: Dieses Konzept kümmert sich um die Erkennung der oben beschriebenen Fälle wie gleichzeitiges ändern diverser Daten, oder dem wessen Daten synchronisiert werden sollen.
  • Conflict resolution: Hier wird nun entschieden, wie der oben erkannte Konflikt gelöst werden soll. Frei nach dem Prinzip „wer zuerst kommt mahlt zuerst“, oder „der Letzte gewinnt“ – also wessen Datensatz soll als Referenz für die Aktualisierung dienen.
  • Slow and fast synchronisation: Sollen nur die Daten verglichen werden, die sich seit dem letzten vollen Synchronisationsvorgang geändert haben, oder alle?

Dies ist nur ein Überblick über die Konzepte – er wurde nur aus Gründen der Vollständigkeit wiedergegeben.

Schema

Bild:Schema.jpg
SyncML-Protokollaufbau, Quelle: www.tecchannel.de
Mit SyncML erhalten die Geräte ein einheitliches Austauschprotokoll. Dieses arbeitet dabei unabhängig vom Gerätetyp und vom Übertragungsweg: Damit so unterschiedliche Gerätegattungen wie PDAs, Handhelds, Mobiltelefone, Kameras und PCs ihre Daten mit dem Synchronisationsprotokoll austauschen können, unterstützt SyncML etablierte Protokolle wie HTTP, WSP (Wireless Session Protocol, Teil des WAP-Protokolls), OBEX für Bluetooth- und IrDA-Verbindungen, aber auch TCP/IP als klassisches Internet-Protokoll.

Kommunikation

Bild:Komm.jpg
Grundsätzlicher Ablauf bei einer Synchronisation zwischen Server und Client, Quelle: www.syncml.org
Die folgende Grafik soll den Synchronisationsablauf zwischen einem Server und einem Client schematisch darstellen. Man erkennt deutlich, dass sowohl Server als auch Client über eine SyncML-Schnittstelle (Interface) verfügen, die den reibungslosen Datenaustausch ermöglichen.

Die SyncML-konvertierten Daten werden über ein beliebiges Protokoll vom Server zum Client und umgekehrt übertragen – dies kann sowohl HTTP, TCP/IP, als auch WSP (WAP) oder OBEX (Bluetooth, Infrarot) sein.

Der Sync Client Agent leitet einen Synchronisationsvorgang auf Basis des SyncML-Protokolls ein und verwaltet die Übertragungsvorgänge auf Client-Seite. Auf der Gegenseite des Client wartet der Sync Server Agent auf eine Synchronisationsanforderung.

Die Sync Engine führt dabei eine Analyse durch und prüft, welche Daten verändert werden müssen. Dazu öffnet und modifiziert sie Datenbanken, reagiert auf Veränderungen im Terminkalender oder aktualisiert die Ordner des E-Mail-Programms.

Nutzen

Auf der Client-Seite, das bedeutet im Grunde die Seite des Endbenutzers – und somit den mobilen Teil – beherrscht SyncML die Datentypen, wie sie bei E-Mail, Kalendereinträgen, Adressverzeichnissen und Dokumenten vorkommen. Gleichzeitig ist SyncML so flexibel, dass sich neue Formate ohne größeren Aufwand einbinden lassen. Im Einzelnen leistet das Protokoll folgendes:

  • Es ermöglicht Datenkommunikation über kabelgebundene und Funknetze sowie Infrarot-Verbindungen.
  • Es unterstützt eine Vielzahl von Transportprotokollen und Datenformaten.
  • Es ermöglicht den Datenzugriff von vielen verschiedenen Geräten aus.
  • Es verarbeitet beliebige Daten aus dem Netzwerk.
  • Es berücksichtigt die begrenzten Ressourcen von mobilen Systemen bezüglich Speicher und Verarbeitungsleistung.
  • Es setzt auf bestehende Internet- und Webtechniken auf.
  • Es unterstützt diejenigen Synchronisationsfunktionen, auf die möglichst viele Systeme zurückgreifen.

Weblinks

Persönliche Werkzeuge