Condividi tramite


Implementazione di un provider standard personalizzato

In Microsoft Sync Framework un provider di sincronizzazione è un componente software che consente a una replica di sincronizzare i dati con altre repliche. Tramite una sessione di sincronizzazione, un'applicazione di sincronizzazione connette un provider di destinazione a un provider di origine per sincronizzare con la replica di destinazione gli elementi che sono stati modificati nella replica di origine. Un semplice esempio di provider di sincronizzazione è dato un componente che gestisce una cartella all'interno di un file system. Questo provider può essere connesso a un altro provider che gestisce anch'esso una cartella per sincronizzare i file nella relativa cartella con i file della cartella dell'altro provider.

Durante la sincronizzazione, il provider di destinazione fornisce la propria conoscenza corrente, accetta un elenco di modifiche rispetto all'origine, rileva i possibili conflitti tra l'elenco e i propri elementi, filtra eventualmente l'elenco di elementi e applica le modifiche al proprio archivio dati. Il provider di origine utilizza la conoscenza corrente della replica di destinazione per determinare le modifiche presenti nella replica di origine di cui la replica di destinazione non è a conoscenza, filtra eventualmente l'elenco delle modifiche, quindi invia l'elenco delle modifiche al provider di destinazione. In Sync Framework sono inclusi componenti che consentono di gestire molte di queste attività per conto dei provider.

Implementazione di un provider di sincronizzazione

Un provider di sincronizzazione può essere implementato tramite codice gestito o non gestito.

Security noteSicurezza Nota

In Sync Framework i provider di sincronizzazione vengono considerati codice attendibile. Di conseguenza, un'applicazione che richiama un provider di sincronizzazione deve accertare l'attendibilità del provider acquisendo la conoscenza esplicita del provider oppure utilizzando qualche altro meccanismo, ad esempio la firma digitale.

Implementazione di un provider di sincronizzazione tramite codice gestito

Quando si sviluppa un provider, l'attività principale consiste nell'implementazione della classe astratta KnowledgeSyncProvider, che eredita dalla classe astratta SyncProvider, e delle interfacce IChangeDataRetriever e INotifyingChangeApplierTarget.

Prima di poter avviare la sincronizzazione, il provider deve innanzitutto rendere disponibile la propria implementazione di SyncProvider all'applicazione di sincronizzazione tramite il meccanismo richiesto dall'applicazione.

Durante una sincronizzazione tipica, in Sync Framework vengono effettuate le chiamate di base seguenti:

  • Chiamata a BeginSession in entrambi i provider. Il provider viene informato della propria unione in join a una sessione di sincronizzazione.

  • Chiamata a GetSyncBatchParameters nel provider di destinazione. Il provider di destinazione restituisce la propria conoscenza e le dimensioni del batch richieste.

  • Chiamata a GetChangeBatch nel provider di origine. Viene passata la conoscenza del provider di destinazione. Il provider di origine utilizza la conoscenza del provider di destinazione per rilevare le modifiche e le restituisce in batch. Per ulteriori informazioni, vedere Enumerazione delle modifiche.

  • Chiamata a ProcessChangeBatch nel provider di destinazione. Viene passato l'elenco delle modifiche dal provider di origine. Il provider di destinazione utilizza l'oggetto di applicazione modifiche di Sync Framework per rilevare i conflitti e applicare le modifiche. Per ulteriori informazioni, vedere Gestione dei conflitti e Applicazione delle modifiche.

  • Chiamata a LoadChangeData nel provider di origine per ogni modifica presente nel batch. Il provider di origine restituisce un'interfaccia al proprio meccanismo di trasferimento dei dati.

  • Chiamata a SaveItemChange nel provider di destinazione per ogni modifica presente nel batch. Il provider di destinazione utilizza il meccanismo di trasferimento dell'origine per trasferire i dati associati alla modifica.

  • Chiamata a StoreKnowledgeForScope nel provider di destinazione. Il provider di destinazione salva la conoscenza passata come propria conoscenza corrente.

  • Chiamata a EndSession in entrambi i provider. Il provider viene informato della propria uscita da una sessione di sincronizzazione a cui era stato unito in join.

Per ulteriori informazioni sulla creazione di un provider di sincronizzazione, vedere Procedura: creare un provider di sincronizzazione gestito.

Implementazione di un provider di sincronizzazione tramite codice non gestito

Quando si sviluppa un provider, l'attività principale consiste nell'implementazione delle interfacce IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever e ISynchronousNotifyingChangeApplierTarget. Esistono inoltre versioni asincrone di alcune di queste interfacce. Vedere Interfaccia IAsynchronousDataRetriever e Interfaccia IAsynchronousNotifyingChangeApplierTarget.

Prima di poter avviare la sincronizzazione, il provider deve innanzitutto rendere disponibile la propria implementazione di ISyncProvider all'applicazione di sincronizzazione tramite il meccanismo richiesto dall'applicazione.

Durante una sincronizzazione tipica, in Sync Framework vengono effettuate le chiamate di base seguenti:

  • Chiamata a BeginSession in entrambi i provider. Il provider viene informato della propria unione in join a una sessione di sincronizzazione.

  • Chiamata a GetSyncBatchParameters nel provider di destinazione. Il provider di destinazione restituisce la propria conoscenza e le dimensioni del batch richieste.

  • Chiamata a GetChangeBatch nel provider di origine. Viene passata la conoscenza del provider di destinazione. Il provider di origine utilizza la conoscenza del provider di destinazione per rilevare le modifiche e le restituisce in batch. Per ulteriori informazioni, vedere Enumerazione delle modifiche.

  • Chiamata a ProcessChangeBatch nel provider di destinazione. Viene passato l'elenco delle modifiche dal provider di origine. Il provider di destinazione utilizza l'oggetto di applicazione modifiche di Sync Framework per rilevare i conflitti e applicare le modifiche. Per ulteriori informazioni, vedere Gestione dei conflitti e Applicazione delle modifiche.

  • Chiamata a LoadChangeData nel provider di origine per ogni modifica presente nel batch. Il provider di origine restituisce un'interfaccia al proprio meccanismo di trasferimento dei dati.

  • Chiamata a SaveChange nel provider di destinazione per ogni modifica presente nel batch. Il provider di destinazione utilizza il meccanismo di trasferimento dell'origine per trasferire i dati associati alla modifica.

  • Chiamata a SaveKnowledge nel provider di destinazione. Il provider di destinazione salva la conoscenza passata come propria conoscenza corrente.

  • Chiamata a EndSession in entrambi i provider. Il provider viene informato della propria uscita da una sessione di sincronizzazione a cui era stato unito in join.

Per ulteriori informazioni sulla creazione di un provider di sincronizzazione, vedere Procedura: creare un provider di sincronizzazione non gestito.

Vedere anche

Riferimento

Interfaccia IKnowledgeSyncProvider
Interfaccia ISynchronousDataRetriever
Interfaccia ISyncProvider
Interfaccia ISynchronousNotifyingChangeApplierTarget
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget

Concetti

Microsoft Sync Framework
Procedura: creare un provider di sincronizzazione non gestito
Enumerazione delle modifiche
Gestione dei conflitti
Applicazione delle modifiche
Sincronizzazione delle unità di modifica
Segnalazione dello stato della sincronizzazione
Filtro dei dati di sincronizzazione
Supporto delle attività di sincronizzazione simultanee
Considerazioni relative alla progettazione di provider personalizzati standard
Interoperabilità con i feed FeedSync
Recupero di una replica non aggiornata