Share via


Cenni preliminari sulle applicazioni connesse occasionalmente

Un' applicazione connessa occasionalmente è un'applicazione che utilizza i dati presenti in un database remoto ma che può non sempre avere accesso al database remoto. Le applicazioni connesse occasionalmente vengono utilizzate anche quando l'accesso è sempre disponibile ma non è utile eseguire continuamente query sul database remoto per dati che vengono modificati raramente, ad esempio un elenco di stati o categorie di prodotti. In questi casi, le applicazioni possono utilizzare i dati da un database locale che risiede nel client e sincronizzare periodicamente i dati con il database remoto sul server.

In altre parole, se l'applicazione utilizza dati da un database remoto che non devono essere recuperati ogni volta dal database, è possibile utilizzare una cache del database locale per archiviare i dati nel computer client o direttamente all'interno dell'applicazione, come ad esempio nel caso di un'applicazione di inventario che utilizza dati da diverse tabelle di un database. Il numero di articoli disponibili in magazzino per ogni singolo pezzo rappresenta un dato importante che viene continuamente modificato, pertanto, se possibile, l'applicazione deve riflettere sempre i valori correnti nel database. Tuttavia, nell'applicazione viene visualizzato anche un elenco delle aziende di spedizione valide che raramente viene modificato. Queste aziende di spedizione valide vengono archiviate nella tabella Shippers e non devono essere recuperate dal database ogni volta che viene inviata una query sui dati. Archiviando la tabella Shippers in una cache del database locale, è possibile ridurre il numero di roundtrip non necessari effettuati dall'applicazione al database remoto. Pertanto, oltre a utilizzare una cache del database locale per le applicazioni che si connettono occasionalmente, è consigliabile utilizzare una cache del database locale anche per archiviare i dati che vengono modificati raramente o che vengono modificati in base a una pianificazione stabilita.

È possibile configurare la memorizzazione nella cache per archiviare singole tabelle, set di tabelle o record specifici per i quali viene eseguita una query da una tabella, ad esempio solo i clienti che hanno un rappresentante vendite specifico.

La sincronizzazione dei dati tra i database del client e del server è facilitata da Servizi di sincronizzazione Microsoft per ADO.NET (lo spazio dei nomi Microsoft.Synchronization.Data). È possibile configurare la sincronizzazione visivamente in Visual Studio utilizzando la finestra di dialogo Configura sincronizzazione dati oppure utilizzando la Configurazione guidata origine dati quando si crea un dataset tipizzato. Per ulteriori informazioni, vedere Procedura: configurare la sincronizzazione dei dati in un'applicazione e Procedura dettagliata: creazione di un'applicazione connessa occasionalmente tramite la Configurazione guidata origine dati.

Visual Studio supporta inoltre la funzionalità di rilevamento delle modifiche di SQL Server 2008. È possibile abilitare il rilevamento delle modifiche di SQL Server 2008 durante la configurazione della sincronizzazione dalla finestra di dialogo Configura sincronizzazione dati o dalla Configurazione guidata origine dati. Per ulteriori informazioni, vedere Procedura: configurare la sincronizzazione dei dati in modo da utilizzare il rilevamento delle modifiche di SQL Server.

Limitazione della cache del database locale in SQL Azure

È possibile utilizzare la cache del database locale per sincronizzare i dati trovati in SQL Azure con un database locale SQL Compact. Tuttavia, i servizi basati su Cloud come SQL Azure utilizzano un ambiente multi-tenant in cui i clienti condividono lo stesso hardware ma i provider di dati esistenti non sono semplificati per tale ambiente. Per proteggere un cliente dall'onere di un carico di lavoro iniziato da un altro cliente, SQL Azure utilizza un meccanismo di limitazione in modo da limitare la quantità di risorse assegnate a una singola richiesta. In particolare, SQL Azure pone un limite al periodo di esecuzione di una transazione e alla crescita del log che si può verificare per una singola transazione.

È necessario utilizzare questi provider per scenari di base e piccole quantità di dati. Se si tenta di sincronizzazione una grande quantità di dati, è possibile che l'operazione di sincronizzazione non riesca a causa dei problemi di limitazione. Se si verificano problemi di limitazione, non è possibile ridurre il numero di modifiche per evitare errori di sincronizzazione. Inoltre, questi provider non sono ideali per scenari più avanzati che richiedono una sincronizzazione bidirezionale.

Per informazioni dettagliate sui componenti semplificati per gli scenari che utilizzano SQL Azure, vedere https://go.microsoft.com/fwlink/?LinkId=180745.

API dei servizi di sincronizzazione (Microsoft.Synchronization.Data)

I Servizi di sincronizzazione Microsoft per ADO.NET sono progettati per le applicazioni connesse occasionalmente. Consentono di sincronizzare i dati da diverse origini su architetture a due livelli, a più livelli e basate su servizi. Invece di replicare solo un database e il relativo schema, l'API dei servizi di sincronizzazione fornisce un set di componenti per sincronizzare i dati tra i servizi di dati e un archivio locale. Le applicazioni vengono sempre più utilizzate su client mobili come computer e dispositivi portatili, che non dispongono di una connessione di rete stabile e affidabile a un server centrale. È quindi importante che in tali applicazioni sia possibile utilizzare una copia locale dei dati sul client, ed è altrettanto importante poter sincronizzare la copia locale dei dati con i dati in un server centrale quando è disponibile una connessione di rete. L'API dei Servizi di sincronizzazione, creata in base alle API di accesso ai dati ADO.NET, consente di sincronizzare i dati in modo intuitivo. Rende la creazione di applicazioni per ambienti connessi occasionalmente un'estensione logica della creazione di applicazioni che si basano su una connessione di rete stabile.

Installazione dell'API dei servizi di sincronizzazione e della documentazione

L'API dei Servizi di sincronizzazione non fa parte di .NET Framework. Viene installata come parte dell'installazione di SQL Server Compact 3.5. (Per impostazione predefinita, SQL Server Compact 3.5 viene installata quando si installa Visual Studio). Per impostazione predefinita, la documentazione Servizi di sincronizzazione non viene installata. Di conseguenza, sarà disponibile solo se la Guida è configurata per l'utilizzo online. Per installare la documentazione di Servizi di sincronizzazione per l'utilizzo locale, è necessario prima scaricare l'insieme di file della Guida dal sito Web Microsoft Synchronization Services for ADO.NET Books Online (informazioni in lingua inglese).

Come incorporare la sincronizzazione dei dati nelle applicazioni mediante Visual Studio

Per incorporare la sincronizzazione dei dati nell'applicazione, Visual Studio fornisce un modello Cache database locale. La Cache database locale è disponibile come modello di nuovo elemento del progetto. Scegliere Aggiungi nuovo elemento dal menu Progetto. Per ulteriori informazioni, vedere Procedura: configurare la sincronizzazione dei dati in un'applicazione.

Oltre al modello Cache database locale, è possibile utilizzare anche la Configurazione guidata origine dati per configurare la sincronizzazione. Nella configurazione di un dataset tipizzato, selezionare l'opzione Abilita memorizzazione nella cache del database locale nella pagina Seleziona oggetti di database della procedura guidata. Per ulteriori informazioni, vedere la classe Procedura dettagliata: creazione di un'applicazione connessa occasionalmente tramite la Configurazione guidata origine dati.

Quando si aggiunge una Cache database locale, viene visualizzata la finestra di dialogo Configura sincronizzazione dati. Utilizzare questa finestra di dialogo per fornire informazioni specifiche sul client e sul server in modo da configurare i componenti necessari per la sincronizzazione. La cache del database locale utilizza un database di SQL Server Compact 3.5 sul client per archiviare i dati localmente. È possibile utilizzare un database di SQL Server Compact 3.5 esistente come cache del database locale. Se non si dispone ancora di un database locale, è possibile utilizzare la finestra di dialogo Configura sincronizzazione dati per creare un nuovo database locale. Per creare un nuovo database locale di SQL Server Compact 3.5, è possibile impostare la Connessione client nella finestra di dialogo Configura sincronizzazione dati per creare un nuovo database di SQL Server Compact 3.5 in base alle tabelle selezionate dalla Connessione server.

Nota

La finestra di dialogo Configura sincronizzazione dati consente di configurare i Servizi di sincronizzazione Microsoft per ADO.NET solo per scenari di download. In altri termini, dopo avere configurato la sincronizzazione dei dati utilizzando la finestra di dialogo, la chiamata a Microsoft.Synchronization.Data.SyncAgent.Synchronize comporterà solo l'aggiornamento del database locale con le modifiche rilevate nel database remoto. Le modifiche apportate ai dati del database locale non verranno caricate nel database remoto. Dopo avere configurato la sincronizzazione dei dati utilizzando la finestra di dialogo Configura sincronizzazione dati, è possibile consentire i caricamenti a livello di codice (sincronizzazione bidirezionale) durante la sincronizzazione. Per ulteriori informazioni, vedere Procedura: configurare un database locale e remoto per la sincronizzazione bidirezionale.

Configurazione del database remoto per la sincronizzazione

Affinché la sincronizzazione dei dati venga eseguita correttamente, è necessario aggiungere alcuni elementi a ciascuna tabella del database remoto da sincronizzare. La finestra di dialogo Configura sincronizzazione dati consente di creare script SQL da eseguire nel database remoto per creare gli oggetti necessari, elencati nella tabella riportata di seguito. Tutti gli script SQL creati mediante la finestra di progettazione per la sincronizzazione vengono salvati in una cartella SQLScripts del progetto.

Nota

Gli script SQL generati dalla finestra di dialogo Configura sincronizzazione dati vengono eseguiti automaticamente. È possibile scegliere se gli script vengono generati ed eseguiti impostando le opzioni Generazione script nella finestra di dialogo Configura tabelle per uso offline.

Il comportamento predefinito della finestra di dialogo Configura sincronizzazione dati consente di eseguire automaticamente gli script e aggiornare il database remoto quando la finestra di dialogo viene chiusa. Deselezionare la casella di controllo Esegui script alla chiusura di questa finestra di dialogo se non si desidera eseguire automaticamente gli script. Inoltre, se nel database remoto sono già presenti le colonne di rilevamento, i trigger e la tabella degli elementi eliminati necessari, gli script non vengono generati. In altre parole, se non è necessaria alcuna modifica al database remoto, non viene creato alcuno script.

Nella tabella riportata di seguito sono indicati gli elementi necessari nel database remoto e la relativa descrizione:

Elementi da aggiungere a ogni tabella sincronizzata nel database remoto

Descrizione

Colonna LastEditDate

Questa colonna deve essere di tipo DateTime o TimeStamp in ogni tabella da sincronizzare. Viene confrontata con la colonna LastEditDate presente nel client per identificare i record modificati nel server dall'ultima chiamata della sincronizzazione.

Colonna CreationDate

Questa colonna deve essere di tipo DateTime o TimeStamp in ogni tabella da sincronizzare. Viene confrontata con la colonna CreationDate presente nel client per identificare i record aggiunti nel server dall'ultima chiamata della sincronizzazione.

Tabella degli elementi eliminati (NomeTabella_Deleted)

In questa tabella vengono spostati tutti gli elementi eliminati dalla tabella nel server database. Questa operazione viene eseguita per identificare i record eliminati dal server dall'ultima chiamata della sincronizzazione. Per ogni tabella da sincronizzare è necessaria una tabella degli elementi eliminati in modo da tenere traccia dei record eliminati dalla tabella remota.

DeletionTrigger (NomeTabella_DeletionTrigger)

Questo trigger viene eseguito ogni volta che un record viene eliminato dalla tabella di database del server. I record eliminati vengono spostati nella tabella degli elementi eliminati poiché i record del database client che non sono presenti nel database server possono essere considerati come record nuovi ed essere aggiunti di nuovo al server. I servizi di sincronizzazione controllano la tabella degli elementi eliminati per determinare se eliminare un record eliminato dal database client o aggiungerlo di nuovo al database server.

InsertTrigger (NomeTabella_InsertTrigger)

Questo trigger popola la colonna CreationDate con la data e l'ora correnti quando vengono aggiunti nuovi record.

UpdateTrigger (NomeTabella_UpdateTrigger)

Questo trigger popola la colonna LastEditDate con la data e l'ora correnti quando vengono modificati i record esistenti.

Avvio del processo di sincronizzazione da un'applicazione

Dopo avere fornito le informazioni necessarie nella finestra di dialogo Configura sincronizzazione dati, aggiungere il codice all'applicazione per avviare la sincronizzazione. È importante comprendere che con la sincronizzazione dei dati viene aggiornato il database locale, non la tabella nel dataset o qualsiasi altro oggetto nell'applicazione. Ricordare di ricaricare l'origine dati dell'applicazione con i dati aggiornati dal database locale. Ad esempio, chiamare il metodo TableAdapter.Fill per caricare la tabella dati del dataset con i dati aggiornati dal database locale.

Vedere anche

Attività

Procedura: configurare la sincronizzazione dei dati in un'applicazione

Procedura dettagliata: creazione di un'applicazione connessa occasionalmente

Procedura: configurare un database locale e remoto per la sincronizzazione bidirezionale

Concetti

SQL Server Compact 3.5 e Visual Studio

Altre risorse

Accesso ai dati in Visual Studio