Condividi tramite


Enumerazione delle modifiche

Quando un provider di origine risponde a una richiesta GetChangeBatch (per il codice gestito) o IKnowledgeSyncProvider::GetChangeBatch (per il codice non gestito), deve generare un batch di modifiche non conosciute dalla replica di destinazione. Il provider di origine determina gli elementi della replica di origine non contenuti nell'oggetto conoscenza inviato dal provider di destinazione, quindi restituisce un batch di tali elementi.

Ogni batch di modifiche include le informazioni seguenti:

  • ID globali e versioni per gli elementi modificati.

  • Contrassegni per la rimozione definitiva che la replica di destinazione deve conoscere.

  • Conoscenza corrente. Si tratta della conoscenza della replica di origine nel momento in cui sono state apportate le modifiche. Sync Framework calcola la conoscenza acquisita per la destinazione dalla conoscenza corrente man mano che il provider di destinazione applica le modifiche.

  • Conoscenza necessaria. Si tratta della conoscenza minima di cui una replica di destinazione deve disporre per elaborare questo batch di modifiche. Se la conoscenza della replica di destinazione non contiene la conoscenza necessaria, non può elaborare queste modifiche.

  • Conoscenza dimenticata della replica di origine. Viene utilizzata per rilevare una replica di destinazione non aggiornata.

Enumerazione delle modifiche tra due repliche

In questa sezione viene illustrato uno scenario che descrive il processo di enumerazione delle modifiche tra due repliche tramite le interfacce della conoscenza Sync Framework.

Nota

   Una replica deve accertarsi del fatto che le modifiche apportate in locale vengano applicate nella relativa conoscenza prima di essere enumerate da un provider. Questa operazione può essere effettuata aggiornando la conoscenza quando viene apportata una modifica locale o eseguendo un passaggio di manutenzione di metadati prima di enumerare le modifiche.

In questo scenario, un provider di destinazione richiede le modifiche dal provider di origine. L'ordine di richiesta è il seguente:

  1. La replica di destinazione verifica che tutte le modifiche apportate in locale vengano applicate alla conoscenza per l'ambito da sincronizzare con la replica di origine.

  2. Il provider di destinazione invia la conoscenza della replica di destinazione al provider di origine. Il provider di origine riceve la conoscenza tramite il metodo GetChangeBatch (per il codice gestito) o IKnowledgeSyncProvider::GetChangeBatch (per il codice non gestito).

  3. Per generare un batch di modifiche, il provider di origine enumera le modifiche, le elimina nella replica di origine e le verifica una a una rispetto alla conoscenza della replica di destinazione. Una modifica viene aggiunta al batch di modifiche solo quando non è contenuta nella conoscenza della replica di destinazione. Il batch di modifiche è rappresentato dall'oggetto ChangeBatch (per il codice gestito) o dall'interfaccia ISyncChangeBatch (per il codice non gestito).

  4. Il provider di origine restituisce il batch di modifiche al provider di destinazione.

Nota

   Potenzialmente, è possibile che siano presenti numerose modifiche in un insieme di modifiche. Per disporre del tempo necessario per l'elaborazione dell'elenco di modifiche in ingresso, il provider di destinazione può richiedere che le modifiche vengano inviate in batch restituendo un numero diverso da zero per le dimensioni del batch nel metodo GetSyncBatchParameters (per il codice gestito) o GetSyncBatchParameters (per il codice non gestito).

Quando il provider di origine utilizza unità di modifica per rappresentare elementi secondari enumerati dalla replica di origine, invia solo le unità di modifica modificate, anziché l'elemento intero. Per ulteriori informazioni, vedere Sincronizzazione delle unità di modifica.

Gestione di modifiche obsolete

Quando viene creato un batch di modifiche, le modifiche obsolete vengono automaticamente escluse. Una modifica è obsoleta se è già contenuta nella conoscenza della replica di destinazione e non deve essere applicata alla replica di destinazione. Quando una modifica viene aggiunta a un batch di modifiche, Sync Framework confronta la versione della modifica rispetto alla conoscenza della replica di destinazione e aggiunge la modifica solo se quest'ultima non è contenuta nella conoscenza della replica di destinazione. In questo modo è possibile creare un batch di modifiche minimo e consentire a un provider di implementare un algoritmo più semplice per l'enumerazione delle modifiche, ad esempio basato sul conteggio.

Un provider può verificare autonomamente che le modifiche aggiunte a un batch di modifiche non siano obsolete. A tale scopo, il provider determina se l'ID globale e la versione della modifica sono contenuti nella conoscenza della replica di destinazione. Questa operazione viene eseguita tramite il metodo Contains (per il codice gestito) o il metodo ISyncKnowledge::ContainsChange (per il codice non gestito). Se la conoscenza non contiene la modifica, il provider la aggiunge al batch di modifiche. Questo approccio consente di creare un batch di modifiche minimo ed è utile per i provider che desiderano avere un controllo completo sulla creazione del batch di modifiche.

Vedere anche

Riferimento

Interfaccia ISyncKnowledge
Interfaccia ISyncChangeBatch
Interfaccia IKnowledgeSyncProvider
IKnowledgeSyncProvider::GetChangeBatch
SyncKnowledge
ChangeBatch
KnowledgeSyncProvider
GetChangeBatch

Concetti

Provider di sincronizzazione
Gestione dei conflitti
Informazioni sulla conoscenza di sincronizzazione