Condividi tramite


Nozioni fondamentali sulla sincronizzazione dei dati

Microsoft Sync Framework sincronizza archivi dati o repliche tramite tre componenti di base: una sessione di sincronizzazione e due provider di sincronizzazione. Per sincronizzare i dati, un'applicazione crea una sessione di sincronizzazione e la passa a un provider di origine e a un provider di destinazione. La sessione utilizza il provider di origine per ottenere le nuove modifiche che si sono verificate sulla replica di origine e utilizza il provider di destinazione per applicare queste modifiche alla replica di destinazione.

La parte preponderante del lavoro di sviluppo è richiesta per la creazione di un provider. Un provider gestisce i metadati e la conoscenza della replica, oltre ai metadati di ogni elemento che deve essere sincronizzato. Un provider trasferisce inoltre i dati effettivi dell'elemento da e verso l'archivio dati. Un provider utilizza componenti di Sync Framework per enumerare le modifiche quando viene utilizzato come origine e per rilevare i conflitti e applicare le modifiche in caso di utilizzo come destinazione.

Algoritmo di sincronizzazione

L'algoritmo per una sincronizzazione unidirezionale include i passaggi seguenti:

  1. La sessione ottiene la conoscenza corrente della replica di destinazione e la invia al provider di origine.

  2. Il provider di origine enumera le modifiche non contenute nella conoscenza di destinazione.

  3. Il provider di origine invia le modifiche alla sessione.

  4. La sessione rileva i conflitti e applica le modifiche alla replica di destinazione tramite il provider di destinazione.

La sincronizzazione bidirezionale tra due repliche viene eseguita tramite due sincronizzazioni unidirezionali.

Codice gestito L'oggetto SyncOrchestrator esegue due sincronizzazioni unidirezionali quando la proprietà Direction è impostata su DownloadAndUpload o su UploadAndDownload.

Codice non gestito L'applicazione deve creare un oggetto ISyncSession per ogni sincronizzazione unidirezionale.

Gestione dei metadati

Ogni replica deve fornire un insieme di metadati che descrive la replica stessa e la relativa conoscenza alla community di sincronizzazione. Una community di sincronizzazione è un insieme di repliche possono eseguire la sincronizzazione tra loro. I metadati richiesti per ogni replica sono: l'ID replica, il conteggio corrente, la mappa di chiavi di replica, la conoscenza corrente, la conoscenza dimenticata, un log dei conflitti e un log di rimozione definitiva. Una replica deve anche gestire i metadati di ogni elemento che deve essere sincronizzato. I metadati richiesti per ogni elemento sono: l'ID globale, la versione corrente e la versione di creazione. In genere, il provider di sincronizzazione gestisce i metadati richiesti per la sincronizzazione. Tuttavia, a seconda dell'implementazione della replica, può essere più utile che alcuni aspetti della gestione dei metadati vengano curati da un componente separato, ad esempio un servizio che esegue la pulizia dei contrassegni per la rimozione definitiva a orari pianificati anziché durante la sincronizzazione.

Per ulteriori informazioni sui metadati, vedere Requisiti dei metadati.

Provider di sincronizzazione

Il provider gestisce i metadati per una replica e può essere utilizzato con Sync Framework per enumerare le modifiche e rilevare i conflitti. Un provider può essere utilizzato anche con l'archivio di elementi di una replica per inviare i dati degli elementi quando svolge la funzione di provider di origine e per applicare le modifiche quando svolge la funzione di provider di destinazione.

Codice gestito Un provider implementa i metodi e le proprietà astratti da KnowledgeSyncProvider, IChangeDataRetriever e INotifyingChangeApplierTarget.

Codice non gestito Un provider implementa le interfacce IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever e ISynchronousNotifyingChangeApplierTarget (o le versioni asincrone per i provider asincroni).

Per ulteriori informazioni sui provider di sincronizzazione e su come implementare e utilizzare queste interfacce, vedere Provider di sincronizzazione.

Applicazioni di sincronizzazione

L'applicazione è il componente che crea l'oggetto della sessione di sincronizzazione, lo connette ai provider e ospita il runtime della sincronizzazione.

Implementazione di un'applicazione di sincronizzazione tramite codice gestito

Per avviare la sincronizzazione, creare un oggetto SyncOrchestrator. Impostare quindi le proprietà LocalProvider e RemoteProvider sulle interfacce SyncProvider dei due provider da sincronizzare. L'applicazione ottiene o crea le interfacce del provider tramite qualsiasi metodo si ritenga appropriato. Dopo la creazione dell'oggetto SyncOrchestrator, chiamare Synchronize per avviare la sincronizzazione. A questo punto, Sync Framework effettua tutte le chiamate necessarie nei due provider per eseguire la sincronizzazione.

Sia l'oggetto SyncOrchestrator che l'oggetto KnowledgeSyncProvider generano eventi durante la sincronizzazione. Per ricevere un evento, implementare un metodo del gestore eventi ed effettuare la registrazione per ricevere l'evento.

Implementazione di un'applicazione di sincronizzazione tramite codice non gestito

Per avviare la sincronizzazione, creare un un oggetto ISyncSession passando CLSID_SyncServices e IID_IApplicationSyncServices alla funzione CoCreateInstance, quindi chiamare IApplicationSyncServices::CreateSyncSession nell'oggetto IApplicationSyncServices restituito.

Il metodo CreateSyncSession richiede le interfacce ISyncProvider dei due provider da sincronizzare. L'applicazione ottiene o crea le interfacce del provider tramite qualsiasi metodo si ritenga appropriato. Dopo la creazione dell'oggetto ISyncSession, chiamare ISyncSession::Start per avviare la sincronizzazione. A questo punto, Sync Framework effettua tutte le chiamate necessarie nei due provider per eseguire la sincronizzazione.

L'oggetto ISyncSession genera eventi durante la sincronizzazione. Per ricevere gli eventi, implementare l'interfaccia ISyncCallback e registrarla tramite ISyncSession::RegisterCallback.

Vedere anche

Riferimento

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

Concetti

Requisiti dei metadati
Provider di sincronizzazione
Applicazioni di sincronizzazione

Altre risorse

Microsoft Sync Framework