Condividi tramite


Novità di Sync Framework 2.0

Sync Framework 2.0 presenta caratteristiche nuove e migliorate nelle aree seguenti:

  • Provider di database

    • Nuovi provider per SQL Server e SQL Server Compact

    • Invio in batch efficace basato su memoria

    • API di provisioning e gestione

    • Inizializzazione con snapshot

    • Flessibilità nella forma della topologia

    • Miglioramenti delle prestazioni

  • Provider di sincronizzazione dei file

    • Conversione dei dati
  • Provider personalizzati

    • Provider semplici

    • Conversione dei dati tra provider

    • Filtro

    • Gestione dei conflitti

    • Analisi

    • Servizio di applicazione modifiche

    • Serializzatore del servizio di archiviazione dei metadati

    • Convertitori del provider

    • Miglioramenti relativi alla conoscenza

    • Livelli di compatibilità

    • Interfacce obsolete

Provider di database

Sync Framework 2.0 offre due nuovi provider di database, diverse importanti caratteristiche correlate alla sincronizzazione e alla gestione e miglioramenti significativi delle prestazioni.

Nuovi provider per SQL Server e SQL Server Compact

Sync Framework 2.0 include due nuovi provider di database:

  • SqlCeSyncProvider viene utilizzato per sincronizzare database SQL Server Compact.

    Questo provider può essere utilizzato per la sincronizzazione con un server centrale. Inoltre, è in grado di effettuare la sincronizzazione con altri client, un'operazione impossibile con SqlCeClientSyncProvider. Questa capacità apre nuovi scenari di sviluppo, ad esempio uno scenario di collaborazione in cui occorre sincronizzare gruppi di persone in assenza di una connessione a un server centrale.

  • SqlSyncProvider viene utilizzato per la sincronizzazione con qualsiasi altra edizione di SQL Server, incluso SQL Server Express Edition.

    Questo provider, che può essere utilizzato come server o come client, riduce in modo significativo gli ostacoli alla sincronizzazione di un database SQL Server. SqlSyncProvider è funzionale quanto DbSyncProvider, ma richiede meno codice e una minore comprensione delle query utilizzate da Sync Framework per sincronizzare i dati. DbSyncProvider è ancora adatto per i database non SQL Server.

Come tutti i provider Sync Framework, questi nuovi provider possono essere utilizzati in qualsiasi forma di topologia: client-server, peer-to-peer e così via. Per ulteriori informazioni su entrambi i provider, vedere Procedura: configurare ed eseguire la sincronizzazione in scenari di collaborazione (SQL Server).

Invio in batch efficace basato su memoria

Le versioni precedenti di Sync Framework e Sync Services per ADO.NET offrono agli sviluppatori un modo per definire una logica di invio in batch personalizzata, chiamata dal runtime di Sync Framework. Questo approccio presenta alcuni svantaggi, ad esempio la complessità intrinseca associata alla divisione delle modifiche in batch, round trip di rete eccessivi tra client e server e l'impossibilità di risolvere problemi di contesa delle risorse perché i batch si basano sul numero di righe sincronizzate, anziché sulla quantità di memoria utilizzata da ciascun batch.

In Sync Framework 2.0 tutti questi problemi vengono risolti mediante un'API di invio in batch più completa ed efficace. Non è più necessario che gli sviluppatori scrivano la logica di invio in batch perché le modifiche vengono divise in batch nel runtime di Sync Framework in base a diverse proprietà dell'API. I batch vengono ora definiti dall'utilizzo della memoria anziché dal numero di righe sincronizzate, pertanto sono stati eliminati i problemi di memoria insufficiente per la maggior parte degli scenari comuni. Per ulteriori informazioni, vedere Procedura: inviare modifiche in batch (SQL Server).

API di provisioning e gestione

Le attività di inizializzazione e provisioning precedentemente esposte solo tramite strumenti di Visual Studio ora sono state aggiunte alle API del provider di database. È inclusa la possibilità di eseguire il provisioning di un database esistente aggiungendo tabelle e trigger di rilevamento delle modifiche richiesti da Sync Framework, nonché la possibilità di iniziare da un database vuoto, creare lo schema utente ed eseguire il provisioning dello schema in base a un altro database server o client di cui è già stato eseguito il provisioning. Per ulteriori informazioni, vedere Procedura: configurare ed eseguire la sincronizzazione in scenari di collaborazione (SQL Server).

È ora possibile eseguire attività comuni quali il backup e il ripristino del database e la pulizia dei metadati direttamente tramite l'API, senza la necessità di implementazione della logica da parte degli sviluppatori. Per ulteriori informazioni, vedere Procedura: backup e ripristino di un database (SQL Server) e Procedura: pulire i metadati per la sincronizzazione in scenari di collaborazione (SQL Server).

Inizializzazione con snapshot

Affinché un database client SQL Server Compact possa cominciare a ricevere modifiche da un altro database, è necessario che contenga uno schema di tabella ed eventuali dati iniziali, nonché l'infrastruttura per il rilevamento delle modifiche richiesta da Sync Framework. In Sync Framework sono disponibili due modi per inizializzare il database:

  • Inizializzazione completa del database client

    L'inizializzazione completa è adatta in alcuni casi, ma non nel caso di scenari con risorse limitate nel client. La creazione di uno schema di database da zero e il caricamento di tutti i dati su una connessione di rete lenta possono comportare tempi di sincronizzazione iniziale lunghi ed errori di memoria insufficiente.

  • Inizializzazione con snapshot del database client tramite un database client esistente

    L'inizializzazione con snapshot, introdotta in Sync Framework 2.0, è stata progettata con lo scopo di ridurre il tempo necessario per inizializzare un database client. Dopo che un database client è stato inizializzato tramite l'inizializzazione completa, i database successivi possono essere inizializzati tramite uno snapshot del primo database client. Uno snapshot è un database SQL Server Compact preparato in modo specifico che contiene l'infrastruttura per il rilevamento delle modifiche, dei dati (facoltativo) e degli schemi. L'inizializzazione con snapshot può migliorare notevolmente i tempi di sincronizzazione iniziale e ridurre in modo significativo i conflitti di memoria. Per ulteriori informazioni, vedere "Provisioning dei client" in Procedura: configurare ed eseguire la sincronizzazione in scenari di collaborazione (SQL Server).

Flessibilità nella forma della topologia

Le versioni precedenti di Sync Services for ADO.NET erano legate a una forma specifica di topologia in cui molti client sincronizzano le modifiche attraverso un server centrale.

Poiché Sync Services for ADO.NET è ora compilato in Sync Framework, gli sviluppatori hanno a disposizione una gamma più ampia di scenari. Ad esempio, possono supportare scenari di collaborazione che richiedono la possibilità di sincronizzare le modifiche tra client. Inoltre, possono considerare lo scenario di una succursale in cui una serie di terminali POS è sincronizzata con un server di succursale sincronizzato a sua volta con un server aziendale centrale.

Poiché i nuovi provider di database sono compilati in Sync Framework, è possibile supportare la sincronizzazione delle modifiche con nuovi tipi di archivio quali Azure SQL Data Services.

Miglioramenti delle prestazioni

I nuovi provider di database di questa versione sono stati testati completamente in scenari di scalabilità orizzontale di grandi dimensioni in cui un solo server supporta migliaia di client con centinaia di operazioni di sincronizzazione simultanee. A seguito di questo test sono stati apportati numerosi miglioramenti delle prestazioni interne che consentono ai provider di database di Sync Framework di garantire prestazioni di livello pari ad altre tecnologie Microsoft, ad esempio RDA, offrendo al contempo un'ampia gamma di funzionalità in grado di competere con le soluzioni end-to-end quali la replica di tipo merge.

Provider di sincronizzazione dei file

Oltre alle API di conversione dei dati che è possibile utilizzare per qualsiasi tipo di provider personalizzato, in Sync Framework 2.0 sono disponibili API di conversione progettate in modo specifico per il provider di sincronizzazione di file. Per ulteriori informazioni, vedere Sincronizzazione di provider di sincronizzazione dei file con altri provider, IFileDataRetriever (codice gestito) e IFileDataRetriever (codice non gestito).

Provider personalizzati

Sync Framework 2.0 offre notevoli miglioramenti delle funzionalità di provider personalizzati standard e un nuovo tipo di provider personalizzato, il provider semplice.

Provider semplici

L'API del provider semplice riduce la quantità di lavoro necessaria per sviluppare provider, soprattutto quando l'origine dati dispone di funzionalità di sincronizzazione ridotte, ad esempio il rilevamento delle modifiche. Questa API consente anche agli sviluppatori meno esperti di sincronizzazione di scrivere un provider. La maggior parte del codice per un provider semplice è il codice necessario per interagire con l'origine dati. Per ulteriori informazioni, vedere Implementazione di un provider personalizzato semplice e Nozioni fondamentali sui provider personalizzati.

Nuovi importanti tipi nel codice gestito

Per un elenco completo di tipi, vedere Microsoft.Synchronization.SimpleProviders.

Nuove importanti interfacce nel codice non gestito

Per un elenco completo di tipi, vedere Componenti dei provider semplici di Sync Framework.

Conversione dei dati tra provider

In alcuni scenari i provider di sincronizzazione sincronizzano lo stesso tipo di dati, ad esempio i dati di vendita, ma il formato richiesto da ogni provider è diverso. Per gestire questa situazione, Sync Framework consente di implementare interfacce in grado di convertire i dati nel formato richiesto da ogni provider. Per ulteriori informazioni, vedere Conversione dei dati tra provider.

Nuovi tipi e nuove proprietà nel codice gestito

Nuove interfacce nel codice non gestito

Filtro

I filtri vengono utilizzati per controllare i dati sottoposti a sincronizzazione. Sync Framework 2.0 supporta i filtri che determinano quali unità di modifica vengono sincronizzate e i filtri personalizzati scritti dallo sviluppatore. In Sync Framework 2.0 i provider possono negoziare quali filtri utilizzare durante la sincronizzazione.

Per ulteriori informazioni, vedere Filtro dei dati di sincronizzazione.

Filtro delle unità di modifica

Un'unità di modifica fa parte di un elemento sottoposto a sincronizzazione, ad esempio un numero di telefono in un elemento contatti. Repliche diverse possono presentare rappresentazioni diverse dello stesso elemento: alcune offrono una rappresentazione più dettagliata e più completa di altre. Ad esempio, una community di sincronizzazione scambia informazioni sui contatti e definisce unità di modifica per name, phone numbere address. Una replica nella community è un dispositivo portatile che può archiviare solo name e phone number. Sync Framework soddisfa le esigenze di questo scenario consentendo a un provider di specificare un filtro delle unità di modifica che indica che una replica è in grado di archiviare solo un subset dei dati. I metadati di sincronizzazione e il processo di sincronizzazione sono stati entrambi migliorati per gestire in modo efficiente questo filtro.

Nuovi tipi nel codice gestito

Nuove interfacce e nuovi metodi nel codice non gestito

Filtri personalizzati

I filtri personalizzati sono scritti dallo sviluppatore e possono presentare qualsiasi formato. Una replica filtrata archivia dati solo per gli elementi inclusi nel filtro, ad esempio una replica di archiviazione di supporti che archivia solo canzoni che abbiano ottenuto almeno la valutazione tre stelle. Se la valutazione di una canzone cambia, l'elemento corrispondente verrà spostato all'interno o all'esterno del filtro. Uno sviluppatore può definire un filtro personalizzato utilizzato per controllare i dati dell'elemento archiviati in una replica filtrata. Una replica di rilevamento dei filtri è un'altra replica della community in grado di identificare quali elementi sono inclusi nel filtro e quali sono stati recentemente spostati all'interno o all'esterno del filtro. È possibile che una replica di rilevamento dei filtri archivi dati per elementi non presenti nel filtro. Sync Framework supporta la sincronizzazione efficiente dalla replica di rilevamento dei filtri alla replica filtrata inviando solo gli elementi inclusi nel filtro, insieme alle informazioni sul filtro. Inoltre, Sync Framework calcola correttamente la conoscenza e altri metadati per la replica di rilevamento dei filtri quando le modifiche vengono inviate dalla replica filtrata alla replica di rilevamento dei filtri.

Si tenga presente che i filtri personalizzati non possono essere utilizzati da provider semplici, da provider che segnalano conflitti di vincoli o che utilizzano il servizio di applicazione modifiche. In caso contrario, possono verificarsi risultati imprevisti.

Nuovi importanti tipi nel codice gestito

Il provider implementa i tipi seguenti:

Sync Framework implementa i tipi seguenti:

Per un elenco completo di tipi, vedere Microsoft.Synchronization.

Nuove importanti interfacce nel codice non gestito

Il provider implementa le interfacce seguenti:

Sync Framework implementa le interfacce seguenti:

Per un elenco completo di interfacce, vedere Componenti principali di Sync Framework.

Filtri negoziati dal provider

Quando un'origine dati di destinazione archivia solo un subset dei dati disponibili, l'efficienza è maggiore se il provider di origine utilizza un filtro per enumerare solo i dati che possono essere archiviati dalla destinazione. La negoziazione del filtro consente a un provider di destinazione di specificare che il provider di origine deve utilizzare uno o più filtri durante l'enumerazione delle modifiche. Il provider di origine può accettare o rifiutare un filtro. Se un provider di origine non supporta alcuno dei filtri richiesti, il provider di destinazione può scegliere di ricevere tutti i dati ed eseguire autonomamente il filtro. Sync Framework chiama di conseguenza i provider appropriati per negoziare l'utilizzo del filtro.

Nuovi tipi nel codice gestito

Nuove interfacce nel codice non gestito

Gestione dei conflitti

In Sync Framework 2.0 è stato aggiunto un supporto migliorato per i conflitti di vincoli, i conflitti registrati e per l'implementazione della risoluzione dei conflitti che prevede che il valore salvato per ultimo sovrascriva i precedenti.

Conflitti di vincoli

In Sync Framework 2.0 è stato aggiunto un supporto migliorato per i conflitti di vincoli, ovvero i conflitti che violano i vincoli imposti su elementi o unità di modifica, ad esempio la relazione di cartelle o il percorso di dati con la stessa denominazione all'interno di un file system. Un provider di destinazione può segnalare un conflitto di vincoli a Sync Framework e utilizzare i componenti di Sync Framework per risolvere il conflitto e determinare come applicare la risoluzione alla replica di destinazione.

Si tenga presente che i conflitti di vincoli non possono essere utilizzati dai provider che utilizzano filtri personalizzati o il servizio di applicazione modifiche. In caso contrario, possono verificarsi risultati imprevisti.

Per ulteriori informazioni, vedere Rilevamento e risoluzione dei conflitti di vincoli.

Tipi nuovi e aggiornati importanti nel codice gestito

I provider di destinazione implementano la nuova classe seguente:

Le applicazioni di sincronizzazione implementano nuovi metodi nella classe seguente:

Sync Framework implementa nuovi membri nelle classi seguenti:

Per un elenco completo di tipi, vedere Microsoft.Synchronization.

Nuove importanti interfacce nel codice non gestito

I provider di destinazione implementano la nuova interfaccia seguente:

Le applicazioni di sincronizzazione implementano la nuova interfaccia seguente:

Sync Framework implementa le nuove interfacce seguenti:

Per un elenco completo di interfacce, vedere Componenti principali di Sync Framework.

Registrazione dei conflitti

Può essere utile salvare conflitti in un log in modo che possano essere elaborati separatamente dalla sessione di sincronizzazione, ad esempio quando un utente deve esaminare i conflitti e decidere come risolverli. In Sync Framework 2.0 è stato definito un set di interfacce del log dei conflitti e vengono forniti componenti che consentono di gestire i conflitti nel log. In Sync Framework è inoltre disponibile un'implementazione delle interfacce del log dei conflitti per le repliche che non contengono un log dei conflitti. Questa implementazione opera nella memoria e viene utilizzata per archiviare conflitti temporanei che potrebbero verificarsi come risultato della gestione dei conflitti di vincoli. Per ulteriori informazioni, vedere Registrazione e gestione di conflitti.

Nuovi tipi nel codice gestito

I provider implementano le nuove classi seguenti:

Sync Framework implementa le nuove classi seguenti:

Nuove interfacce nel codice non gestito

I provider implementano le nuove classi seguenti:

Sync Framework implementa le nuove classi seguenti:

Risoluzione dei conflitti Il valore salvato per ultimo sovrascrive i precedenti

È possibile che un'applicazione desideri risolvere i conflitti di concorrenza (nei quali un elemento viene aggiornato da più di una replica) conservando la modifica più recente, indipendentemente da dove è apportata. Sync Framework 2.0 supporta questa risoluzione fornendo un meccanismo per il recupero dell'ora in cui una modifica è stata apportata nella replica di origine e quindi nella replica di destinazione. L'applicazione confronta le due ore e specifica l'azione di risoluzione dei conflitti da applicare all'ultima modifica.

Per ulteriori informazioni, vedere Rilevamento e risoluzione dei conflitti di concorrenza.

Nuovi tipi nel codice gestito

I provider implementano la nuova interfaccia seguente:

Nuove interfacce nel codice non gestito

I provider implementano la nuova interfaccia seguente:

Analisi

Sync Framework consente di analizzare l'esecuzione di diversi componenti. Questa operazione è utile durante il debug applicazione. Per la maggior parte dei componenti di Sync Framework, l'analisi viene eseguita a livello di codice nativo tramite l'infrastruttura Analisi eventi per Windows (ETW). Anche se lo sviluppo avviene in base alla versione gestita di un'API, viene comunque utilizzato ETW in quanto l'API gestita è un thin wrapper nell'API nativa. Per ulteriori informazioni, vedere Analisi dei componenti di Sync Framework.

I provider del database Sync Framework offrono un'analisi gestita basata sull'implementazione di .NET Framework. Per ulteriori informazioni, vedere Procedura: analizzare il processo di sincronizzazione.

Servizio di applicazione modifiche

Sync Framework include un'implementazione dell'oggetto di applicazione modifiche utilizzata dalla maggior parte delle applicazioni per applicare modifiche a una replica. In Sync Framework 2.0 viene introdotto il servizio di applicazione modifiche che esegue le stesse azioni dell'oggetto di applicazione modifiche, ma in modo più granulare. Un provider di destinazione che richiede maggiore flessibilità dell'oggetto di applicazione modifiche standard può utilizzare il servizio di applicazione modifiche per eseguire solo il set di azioni richiesto.

Si tenga presente che il servizio di applicazione modifiche non può essere utilizzato dai provider che segnalano conflitti di vincoli o utilizzano filtri personalizzati. In caso contrario, possono verificarsi risultati imprevisti.

Per ulteriori informazioni, vedere Applicazione delle modifiche tramite il servizio di applicazione modifiche.

Nuovi tipi nel codice gestito

Nuove interfacce e nuova enumerazione nel codice non gestito

Serializzatore del servizio di archiviazione dei metadati

Il servizio di archiviazione dei metadati archivia i metadati della replica e degli elementi in un database lightweight. I metadati vengono archiviati in uno schema di tabella specifico e in un formato binario che potrebbero cambiare con il rilascio di nuove versioni di Sync Framework. Inoltre, i campi dei provider personalizzati nel database potrebbero cambiare con il rilascio di nuove versioni di un particolare provider. Per consentire una maggiore interoperabilità tra versioni diverse, in Sync Framework sono disponibili un formato di file canonico e un set di interfacce di serializzazione compatibili con le versioni successive e precedenti relativamente a una serie ragionevole di modifiche dei metadati da una versione a un'altra. Per ulteriori informazioni, vedere Accesso ai metadati da componenti con versioni diverse e Aggiornamento della versione dell'archivio dei metadati.

Nuovi tipi nel codice gestito

Nuove interfacce nel codice non gestito

Convertitori del provider

I provider personalizzati derivano in genere da IKnowledgeSyncProvider, ma possono derivare anche direttamente da ISyncProvider. Tuttavia, quando viene utilizzato un oggetto ISyncSession per gestire la sincronizzazione (situazione tipica), il provider deve derivare da IKnowledgeSyncProvider. Per consentire a un provider derivato da ISyncProvider di partecipare a una sessione di sincronizzazione, Sync Framework consente di convertire il provider in IKnowledgeSyncProvider in fase di esecuzione.

Nuove interfacce e nuovi metodi nel codice non gestito

Miglioramenti relativi alla conoscenza

Sync Framework 2.0 migliora l'oggetto conoscenza offrendo maggiore flessibilità ed efficienza.

Struttura della conoscenza

In Sync Framework 2.0 la struttura sottostante di un oggetto conoscenza presenta un formato più flessibile ed efficiente e vengono definite nuove interfacce per accedere a nuovi elementi della conoscenza. Per compatibilità con le versioni precedenti, i nuovi oggetti conoscenza emulano anche l'output dei metodi della conoscenza di Sync Framework 1.0.

Tipi nuovi e aggiornati nel codice gestito

Nuove interfacce e nuova enumerazione nel codice non gestito

In Sync Framework2.0 vengono aggiunti cookie della conoscenza, ovvero rappresentazioni lightweight di sola lettura della conoscenza utilizzabili per effettuare confronti rapidi quando le prestazioni sono particolarmente importanti.

Nuovi tipi e nuovi membri nel codice gestito

Nuovi metodi e nuova enumerazione nel codice non gestito

Livelli di compatibilità

Sync Framework offre livelli di compatibilità per i metadati in modo che i componenti di versioni diverse possano continuare a interagire correttamente. Per ulteriori informazioni, vedere Interoperabilità e compatibilità con le versioni precedenti di Sync Framework.

Nuovi tipi e nuovi membri nel codice gestito

Nuovi metodi e nuova enumerazione nel codice non gestito

Interfacce obsolete

Le interfacce seguenti sono obsolete e non devono essere utilizzate in nuovi progetti di sviluppo. Funzionano come previsto in Sync Framework 2.0, ma potrebbero venire rimosse in una versione successiva.

Interfacce obsolete nel codice non gestito

Vedere anche

Concetti

Microsoft Sync Framework
Vantaggi dell'utilizzo di Sync Framework
Selezione dei componenti appropriati di Sync Framework