Freigeben über


Grundlagen der Datensynchronisierung

Microsoft Sync Framework synchronisiert Datenspeicher oder Replikate mithilfe von drei grundlegenden Komponenten, einer Sychronisierungssitzung und zwei Synchronisierungsanbietern. Um Daten zu synchronisieren, erstellt eine Anwendung eine Synchronisierungssitzung und übergibt diese an einen Quellenanbieter und einen Zielanbieter. Die Sitzung verwendet den Quellenanbieter, um neue, im Quellreplikat vorgenommene Änderungen abzurufen, und den Zielanbieter, um diese Änderungen auf das Zielreplikat anzuwenden.

Die Erstellung eines Anbieters erfordert die meiste Entwicklungsarbeit. Ein Anbieter verwaltet Metadaten und Wissen für das Replikat sowie Metadaten für alle zu synchronisierenden Elemente. Ein Anbieter überträgt auch die tatsächlichen Elementdaten in und aus seinem Datenspeicher. Ein Anbieter verwendet Sync Framework-Komponenten zur Auflistung von Änderungen, wenn der Anbieter als Quelle agiert, und zum Ermitteln und Anwenden von Änderungen, wenn er als Ziel agiert.

Synchronisierungsalgorithmus

Der Algorithmus für eine unidirektionale Synchronisierung enthält die folgenden Schritte:

  1. Die Sitzung ruft das aktuelle Wissen des Zielreplikats ab und sendet es an den Quellenanbieter.

  2. Der Quellenanbieter listet Änderungen auf, die nicht im Zielwissen enthalten sind.

  3. Der Quellenanbieter sendet die Änderungen an die Sitzung.

  4. Die Sitzung ermittelt Konflikte und wendet über den Zielanbieter Änderungen auf das Zielreplikat an.

Die bidirektionale Synchronisierung zwischen zwei Replikaten wird durch zwei unidirektionale Synchronisierungen ermöglicht.

Verwalteter Code Das SyncOrchestrator-Objekt führt zwei unidirektionale Synchronisierungen aus, wenn die Direction-Eigenschaft auf DownloadAndUpload oder UploadAndDownload festgelegt ist.

Nicht verwalteter Code Die Anwendung muss ein ISyncSession-Objekt für jede unidirektionale Synchronisierung erstellen.

Metadatenverwaltung

Jedes Replikat muss einen Satz von Metadaten mit einer Beschreibung des Replikats und des entsprechenden Wissens für die Synchronisierungscommunity zur Verfügung stellen. (Eine Synchronisierungscommunity ist eine Menge von Replikaten, die miteinander synchronisiert werden können.) Die erforderlichen Metadaten für jedes Replikat sind die Replikat-ID, die aktuelle Taktanzahl, das Replikatschlüsselmapping, das aktuelle Wissen, das vergessene Wissen, ein Konfliktprotokoll und ein Tombstoneprotokoll. Ein Replikat muss auch Metadaten für jedes zu synchronisierende Element verwalten. Die erforderlichen Metadaten für jedes Element sind die globale ID, die aktuelle Version und die Erstellungsversion. Der Synchronisierungsanbieter verwaltet in der Regel die Metadaten, die für die Synchronisierung erforderlich sind. Abhängig von der Implementierung des Replikats kann es jedoch für einige Bereiche der Metadatenverwaltung sinnvoller sein, wenn sie von einer getrennten Komponente behandelt werden, wie zum Beispiel von einem Dienst, der Tombstones zu geplanten Zeiten anstatt bei der Synchronisierung bereinigt.

Weitere Informationen zu Metadaten finden Sie unter Metadatenanforderungen.

Synchronisierungsanbieter

Der Anbieter verwaltet die Metadaten für ein Replikat und verwendet Synchronization Framework, um Änderungen aufzulisten und Konflikte zu ermitteln. Weiterhin arbeitet der Anbieter auch mit dem Elementspeicher eines Replikats, um Elementdaten zu senden, wenn der Anbieter als Quellenanbieter agiert, und um Änderungen anzuwenden, wenn der Anbieter als Zielanbieter agiert.

Verwalteter Code Ein Anbieter implementiert die abstrakten Methoden und die Eigenschaften von KnowledgeSyncProvider, IChangeDataRetriever und INotifyingChangeApplierTarget.

Nicht verwalteter Code Ein Anbieter implementiert die Schnittstellen IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever und ISynchronousNotifyingChangeApplierTarget (bzw. die asynchronen Versionn für asynchrone Anbieter).

Weitere Informationen zu Synchronisierungsanbietern und zur Implementierung und Verwendung dieser Schnittstellen finden Sie unter Synchronisierungsanbieter.

Synchronisierungsanwendungen

Die Anwendung ist die Komponente, die das Synchronisierungssitzungsobjekt erstellt, die Verbindung mit den Anbietern herstellt und die Synchronisierungslaufzeit hostet.

Implementieren einer Synchronisierungsanwendung mit verwaltetem Code

Um die Synchronisierung zu starten, erstellen Sie ein SyncOrchestrator-Objekt. Legen Sie dann die LocalProvider-Eigenschaft und die RemoteProvider-Eigenschaft auf die SyncProvider-Schnittstellen der zwei zu synchronisierenden Anbieter fest. Die Anwendung ruft die Anbieterschnittstellen ab bzw. erstellt sie mit der entsprechenden Methode. Nachdem das SyncOrchestrator-Objekt erstellt wurde, rufen Sie Synchronize auf, um die Synchronisierung zu starten. Zu diesem Zeitpunkt führt Sync Framework alle zum Durchführen der Synchronisierung erforderlichen Aufrufe an die beiden Anbieter aus.

Sowohl das SyncOrchestrator-Objekt als auch das KnowledgeSyncProvider-Objekt lösen während der Synchronisierung Ereignisse aus. Zum Empfangen eines Ereignisses implementieren Sie eine Ereignishandlermethode und registrieren diese, um das Ereignis zu empfangen.

Implementieren einer Synchronisierungsanwendung mit nicht verwaltetem Code

Um die Synchronisierung zu starten, erstellen Sie ein ISyncSession-Objekt durch die Übergabe von CLSID_SyncServices und IID_IApplicationSyncServices an die CoCreateInstance-Funktion und rufen dann IApplicationSyncServices::CreateSyncSession auf dem zurückgegebenen IApplicationSyncServices-Objekt auf.

Die CreateSyncSession-Methode benötigt die ISyncProvider-Schnittstellen der beiden zu synchronisierenden Anbieter. Die Anwendung ruft die Anbieterschnittstellen ab bzw. erstellt sie mit der entsprechenden Methode. Nachdem das ISyncSession-Objekt erstellt wurde, rufen Sie ISyncSession::Start auf, um die Synchronisierung zu starten. Zu diesem Zeitpunkt führt Sync Framework alle zum Durchführen der Synchronisierung erforderlichen Aufrufe an die beiden Anbieter aus.

Das ISyncSession-Objekt löst während der Synchronisierung Ereignisse aus. Um Ereignisse zu empfangen, implementieren Sie die ISyncCallback-Schnittstelle und registrieren diese mit ISyncSession::RegisterCallback.

Siehe auch

Verweis

ISyncSession-Schnittstelle
ISyncProvider-Schnittstelle
IKnowledgeSyncProvider-Schnittstelle
ISynchronousDataRetriever-Schnittstelle
ISynchronousNotifyingChangeApplierTarget-Schnittstelle
IApplicationSyncServices-Schnittstelle
IProviderSyncServices-Schnittstelle
ISyncCallback-Schnittstelle
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

Konzepte

Metadatenanforderungen
Synchronisierungsanbieter
Synchronisierungsanwendungen

Weitere Ressourcen

Microsoft Sync Framework