Cenni preliminari sulle applicazioni connesse occasionalmente
Aggiornamento: Luglio 2008
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, insiemi 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 visivamente la sincronizzazione in Visual Studio utilizzando la finestra di dialogo Configura sincronizzazione dati.
A partire da Visual Studio 2008 SP1, oltre alla finestra di dialogo Configura sincronizzazione dati è possibile utilizzare anche la Configurazione guidata origine dati per la configurazione della sincronizzazione. Nella configurazione di un dataset tipizzato, selezionare l'opzione Attiva 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.
Nota: |
---|
Nei progetti per Smart Device, non è possibile aprire la finestra di progettazione per la sincronizzazione dalla Configurazione guidata origine dati. Per ulteriori informazioni, vedere la classe Applicazioni connesse occasionalmente (dispositivi). |
Inoltre, è stato aggiunto il supporto per la funzionalità di rilevamento delle modifiche di SQL Server 2008 per Visual Studio 2008 SP1. È possibile attivare 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 la classe Procedura: configurare la sincronizzazione dei dati in modo da utilizzare il rilevamento delle modifiche di SQL Server.
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 insieme 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.
Nota: |
---|
Nei progetti per Smart Device l'architettura a due livelli non è supportata. Per ulteriori informazioni, vedere la classe Applicazioni connesse occasionalmente (dispositivi). |
Installazione dell'API dei servizi di sincronizzazione e della documentazione
L'API dei Servizi di sincronizzazione non fa parte di .NET Framework. Viene installata con il programma di installazione di SQL Server Compact 3.5. Per impostazione predefinita, SQL Server Compact 3.5 viene installato quando si installa Visual Studio. Per impostazione predefinita, la documentazione di Servizi di sincronizzazione non viene installata. Di conseguenza, sarà disponibile solo se la Guida è configurata per l'utilizzo in linea. 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 la classe Procedura: configurare la sincronizzazione dei dati in un'applicazione.
Nota: |
---|
Non è possibile aggiungere direttamente il modello Cache database locale a un progetto per Smart Device. Al contrario, è necessario aggiungere la Cache database locale al progetto di servizio Web o WCF di livello intermedio e suddividere quindi i componenti della sincronizzazione generati nel progetto per Smart Device. Per ulteriori informazioni, vedere la classe Applicazioni connesse occasionalmente (dispositivi). |
A partire da Visual Studio 2008 SP1, oltre alla finestra di dialogo Configura sincronizzazione dati è possibile utilizzare anche la Configurazione guidata origine dati per la configurazione della sincronizzazione. Nella configurazione di un dataset tipizzato, selezionare l'opzione Attiva 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 non in linea. 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.
Aggiungere all'applicazione il codice riportato di seguito nel punto in cui si desidera avviare il processo di sincronizzazione:
' Call SyncAgent.Synchronize() to initiate the synchronization process.
' Synchronization only updates the local database, not your project's data source.
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
' Add code here to refill your application's data source
' with the updated data from the local database.
// Call SyncAgent.Synchronize() to initiate the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats =
syncAgent.Synchronize();
// Add code to refill your application's data source
// with the updated data from the local database.
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
Procedura dettagliata: creazione di un'applicazione per Smart Device connessa occasionalmente
Concetti
SQL Server Compact 3.5 e Visual Studio
Applicazioni connesse occasionalmente (dispositivi)
Altre risorse
Accesso ai dati (Visual Studio)
Cronologia delle modifiche
Date |
Cronologia |
Motivo |
---|---|---|
Luglio 2008 |
Aggiunto un paragrafo sull'incorporazione della sincronizzazione dei dati dalla Configurazione guidata origine dati. |
Modifica di funzionalità in SP1. |
Luglio 2008 |
Aggiunto un paragrafo sull'attivazione del rilevamento delle modifiche di SQL Server nella configurazione della sincronizzazione dei dati. |
Modifica di funzionalità in SP1. |
Luglio 2008 |
Aggiunte note relative alla sincronizzazione nei progetti per Smart Device. |
Modifica di funzionalità in SP1. |