Procedura dettagliata: creazione di un'applicazione per Smart Device connessa occasionalmente
Aggiornamento: Luglio 2008
In questa procedura dettagliata sono fornite istruzioni particolareggiate per la configurazione della sincronizzazione dei dati in un'applicazione per Smart Device connessa occasionalmente. Nell'applicazione di esempio viene aggiunto un cliente alla cache del database locale e le modifiche vengono sincronizzate con un database remoto. I dati del cliente vengono inoltre visualizzati in un Windows Form e ciò consente di verificare se la sincronizzazione è stata completata correttamente.
Nel corso della procedura dettagliata verranno eseguite le operazioni seguenti:
Creare una nuova applicazione per Smart Device
Aggiungere una nuova libreria del servizio WCF (Window Communication Foundation) che funga da livello intermedio tra la cache del database locale e il database remoto.
Nota: La libreria del servizio del livello intermedio è necessaria perché Synchronization Services for ADO.NET (per i dispositivi) non supporta la sincronizzazione diretta a due livelli.
Aggiungere una nuova Cache database locale al progetto.
Configurare le impostazioni della sincronizzazione.
Configurare e avviare il servizio WCF.
Aggiungere la funzionalità di sincronizzazione all'applicazione per dispositivi.
Test dell'applicazione.
Prerequisiti
Per completare questa procedura dettagliata, è necessario procedere come descritto di seguito:
Installare il database di esempio Northwind in un database Microsoft SQL Server o Microsoft SQL Server Express Edition. La cache del database locale esistente nell'emulatore di dispositivo si sincronizzerà con tale database. Per ulteriori informazioni, vedere Procedura: installare database di esempio.
Installare Windows Mobile Device Center (Windows Vista) oppure ActiveSync (informazioni in lingua inglese).
Installare Visual Studio 2008 Service Pack 1.
Installare Microsoft Synchronization Services for ADO.NET v1 SP1 (Devices) (informazioni in lingua inglese).
Creazione dell'applicazione per Smart Device
Nota: |
---|
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio. |
Per creare un nuovo progetto nel computer desktop
Dal menu File creare un nuovo progetto in Visual Basic o Visual C#.
Nota: La finestra di dialogo Configura sincronizzazione dati è supportata nei progetti in Visual Basic e C#, assicurarsi quindi di selezionare uno di questi linguaggi.
Assegnare alla soluzione il nome Walkthrough e al progetto il nome OCSDeviceApp.
In Tipi progetto fare clic su Smart Device, quindi sul modello Progetto Smart Device.
Scegliere OK.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto Smart Device. Per impostazione predefinita risultano selezionati il sistema operativo di destinazione Windows Mobile 5.0 Pocket PC SDK, .NET Compact Framework versione 3.5 e il modello Applicazione dispositivo.
Scegliere OK.
Il progetto OCSDeviceApp verrà creato e aggiunto in Esplora soluzioni.
Creazione di un servizio WCF
A differenza delle applicazioni desktop, la cache del database SQL Server Compact locale non è in grado di sincronizzarsi direttamente con il database SQL Server remoto per i progetti Smart Device. È necessario creare una libreria del servizio WCF che funga da livello intermedio tra i due database. Nell'applicazione per dispositivi vengono utilizzati servizi esposti dal servizio WCF per la sincronizzazione.
Per aggiungere una libreria del servizio WCF alla soluzione
Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto.
Assegnare al progetto il nome MiddleTierServiceLibrary.
Fare clic su WCF in Tipi progetto, seguito dal modello Libreria Servizio WCF.
Scegliere OK.
Il progetto MiddleTierServiceLibrary verrà creato e aggiunto a Esplora soluzioni.
Aggiunta di una cache del database locale
- A differenza delle applicazioni desktop, il modello Cache database locale non è disponibile nella finestra di dialogo Aggiungi nuovo elemento di un progetto Smart Device. È invece necessario aggiungere una cache del database locale al progetto di servizio WCF o Web di livello intermedio.
Per aggiungere una cache di database locale a un progetto
Fare clic con il pulsante destro del mouse sul progetto MiddleTierServiceLibrary, scegliere Aggiungi e fare clic su Nuovo elemento.
Fare clic sul modello Cache database locale e digitare NorthwindCache.sync nella casella Nome.
Scegliere Aggiungi.
Il file NorthwindCache.sync verrà aggiunto in Esplora soluzioni e verrà visualizzata la finestra di dialogo Configura sincronizzazione dati. Le informazioni sulla configurazione della sincronizzazione verranno memorizzate in NorthwindCache.sync.
Configurazione delle impostazioni di sincronizzazione
Per creare connessioni dati ai database server e client
Per creare una connessione al database Northwind installato come prerequisito della presente procedura dettagliata, utilizzare la finestra di dialogo Configura sincronizzazione dati. Si tratta del database remoto esterno all'applicazione per Smart Device. È possibile selezionare una Connessione server esistente al database Northwind SQL Server oppure, se non esiste alcuna connessione, fare clic su Nuova per crearne una nuova.
Nota: Il rilevamento delle modifiche SQL Server può essere attivato solo dopo che la connessione al server database remoto sarà stata configurata per la connessione a un database SQL Server 2008. Per ulteriori informazioni, vedere Procedura: configurare la sincronizzazione dei dati in modo da utilizzare il rilevamento delle modifiche di SQL Server.
Accettare il valore predefinito Northwind.sdf (nuovo) per la Connessione client. Nella finestra di dialogo Configura sincronizzazione dati verrà creato un nuovo database SQL Server Compact 3.5 che verrà aggiunto al progetto. Per ulteriori informazioni sulle opzioni di connessione dati disponibili, vedere Procedura: creare una connessione dati al database Northwind.
Dopo avere selezionato la connessione al server, nella finestra di dialogo Configura sincronizzazione dati vengono richieste informazioni sulle tabelle disponibili nel database remoto sul server. Nella finestra di dialogo viene inoltre attivato il pulsante Aggiungi, ma solo dopo il recupero dell'elenco delle tabelle disponibili.
Nota: Si noti che alla conclusione di questo passaggio il pulsante OK non è attivato in quanto non è stata selezionata alcuna tabella per la sincronizzazione. Nella sezione successiva viene spiegato come aggiungere tabelle.
Per aggiungere e configurare le tabelle per la memorizzazione nella cache locale
Fare clic su Aggiungi per aprire la finestra di dialogo Configura tabelle per uso non in linea.
Selezionare la tabella Customers.
Nota: Nella finestra di dialogo Configura tabelle per uso non in linea è possibile modificare il comportamento di sincronizzazione predefinito di ogni tabella che si seleziona. Per ulteriori informazioni, vedere Procedura: configurare la sincronizzazione dei dati in un'applicazione.
Accettare i valori predefiniti delle colonne e della tabella. Scegliere OK. Nella finestra di dialogo Configura sincronizzazione dati verranno create colonne di rilevamento e una tabella degli elementi eliminati.
La tabella Customers viene aggiunta all'elenco Tabelle nella cache.
Per suddividere i componenti della sincronizzazione tra i progetti server e client
Nella finestra di dialogo Configura sincronizzazione dati scegliere Avanzate.
Nel menu a discesa Percorso progetto client selezionare OCSDeviceApp.
Scegliere OK.
I componenti verranno suddivisi tra il progetto client e il progetto server, dopo la configurazione della sincronizzazione dei dati. Nel frattempo verrà visualizzata la finestra di dialogo Genera script SQL. Per impostazione predefinita vengono generati script in grado di gestire colonne di rilevamento e tabelle per gli elementi eliminati e aggiornati nel database del server.
Scegliere OK.
Gli script SQL generati verranno salvati nel progetto server. Il database client Northwind.sdf verrà creato nel progetto client e sincronizzato per la prima volta con il database del server.
Quando viene visualizzata la Configurazione guidata origine dati, selezionare la tabella Customers.
Scegliere Fine.
NorthwindDataSet.xsd verrà aggiunto al progetto client e tutte le finestre di dialogo verranno chiuse.
Terminata la configurazione della sincronizzazione, gli elementi seguenti verranno aggiunti al progetto client:
Elemento |
Descrizione |
---|---|
Northwind.sdf |
|
NorthwindCache.Client.sync |
|
NorthwindCache.Client.Designer.cs (o .vb) |
File di codice contenente definizioni per il provider della sincronizzazione client e l'agente di sincronizzazione. Sono comprese tabelle di sincronizzazione per il database locale. Per ulteriori informazioni, vedere Architecture and Classes for Client and Server Synchronization (informazioni in lingua inglese). |
NorthwindDataSet.xsd |
|
References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.SqlServerCe |
Riferimenti richiesti a Microsoft Synchronization Services for ADO.NET. |
Gli elementi seguenti vengono aggiunti al progetto server:
Elemento |
Descrizione |
||
---|---|---|---|
NorthwindCache.sync |
File XML contenente informazioni sulla configurazione della sincronizzazione. Fare doppio clic su tale file per aprire la finestra di dialogo Configura sincronizzazione dati. |
||
NorthwindCache.Designer.cs (o .vb) |
File contenente definizioni relative al provider della sincronizzazione server e all'adattatore di sincronizzazione per il database del server. Per ulteriori informazioni, vedere Architecture and Classes for Client and Server Synchronization (informazioni in lingua inglese). |
||
NorthwindCache.SyncContract.cs (o .vb) |
File di codice contenente la definizione di contratto WCF e la relativa implementazione. |
||
Cartella SQLScripts |
Cartella di script. Gli script che vi sono contenuti vengono utilizzati per tenere traccia delle modifiche del database nel server. Alcuni di essi creano le colonne di rilevamento e la tabella degli elementi eliminati, altri creano trigger in grado di tenere traccia delle modifiche nel server.
|
||
Cartella SQLUndoScripts |
Gli script contenuti in tale cartella eliminano le colonne di rilevamento, la tabella degli elementi e i trigger utilizzati per tenere traccia e rispondere alle modifiche del database intervenute nel server. Servirsi di tali script per annullare le modifiche introdotte nel database mediante la finestra di dialogo Configura sincronizzazione dati.
|
||
References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.Server |
Riferimenti richiesti a Microsoft Synchronization Services for ADO.NET. |
Configurazione e avvio del servizio WCF
Per configurare il servizio WCF (NorthwindCacheSyncService) generato nella finestra di dialogo Configura sincronizzazione dati
In Esplora soluzioni fare doppio clic su NorthwindCache.SyncContract.cs (o .vb) per aprire il file nell'editor del codice.
Aggiungere l'attributo XmlSerializerFormat() prima della definizione INorthwindSyncContract. Verrà visualizzato l'editor del codice:
[ServiceContractAttribute()] [XmlSerializerFormat()] public interface INorthwindCacheSyncContract { <ServiceContractAttribute()> _ <XmlSerializerFormat()> _ Public Interface INorthwindCacheSyncContract
In Esplora soluzioni fare doppio clic su App.config.
Apportare le modifiche XML seguenti al file App.config. Con tali modifiche il progetto viene configurato per ospitare il servizio NorthwindCacheSyncService generato dalla finestra di dialogo Configura sincronizzazione dati anziché il servizio predefinito (Service1) generato dal modello di progetto WCF.
Cambiare <service name="MiddleTierServiceLibrary.Service1" behaviorConfiguration="MiddleTierServiceLibrary.Service1Behavior"> in <service name="MiddleTierServiceLibrary.NorthwindCacheSyncService" behaviorConfiguration="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">
Cambiare <add baseAddress="https://localhost:8731/Design_Time_Addresses/MiddleTierServiceLibrary/Service1/" /> in <add baseAddress="http://<your computer name>:8731/NorthwindCacheSyncService/" />
Cambiare <endpoint address="" binding="wsHttpBinding" contract="MiddleTierServiceLibrary.IService1"> in <endpoint address="" binding="basicHttpBinding" contract="MiddleTierServiceLibrary. INorthwindCacheSyncContract">
Nota: wsHttpBinding non è supportato nei dispositivi.
Cambiare <dns value="localhost"/> in <dns value="<your computer name>"/>
Cambiare <behavior name="MiddleTierServiceLibrary.Service1Behavior"> in <behavior name="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">
Fare clic con il pulsante destro del mouse su MiddleTierServiceLibrary in Esplora soluzioni e scegliere Imposta come progetto di avvio.
Per avviare il servizio WCF, scegliere Avvia senza eseguire debug dal menu Debug.
Verrà visualizzata la finestra di dialogo Distribuisci OCSDeviceApp.
Fare clic su Annulla, quindi su Sì per continuare.
Nota: Verrà avviato semplicemente il servizio WCF: l'emulatore di dispositivo non è ancora necessario.
L'host del servizio WCF viene avviato (l'icona viene visualizzata nell'area di notifica) e ospita il servizio. Il client di prova WCF viene visualizzato consentendo il test del servizio.
Codifica della funzionalità di sincronizzazione nell'applicazione per Smart Device
Con la procedura precedente sono state configurate le opzioni della sincronizzazione dei dati. È necessario a questo punto aggiungere la funzionalità della sincronizzazione all'applicazione per Smart Device.
Aggiunta di un riferimento Web dal progetto al servizio WCF
In Esplora soluzioni fare clic con il pulsante destro del mouse su OCSDeviceApp e scegliere Aggiungi riferimento Web.
Verrà visualizzata la finestra di dialogo Aggiungi riferimento Web.
Digitare l'indirizzo di NorthwindCacheSyncService nella casella URL e fare clic su Vai.
Quando il servizio Web NorthwindCacheSyncService verrà trovato, il pulsante Aggiungi riferimento verrà attivato.
Nota: L'indirizzo del servizio è reperibile nel file App.config.
Assegnare al riferimento Web il nome NorthwindCacheWebRef, quindi fare clic su Aggiungi riferimento.
NorthwindCacheWebRef appare sotto Riferimenti Web in Esplora soluzioni. In Visual Studio viene generato il file Reference.cs il quale, tuttavia, non sarà visibile in Esplora soluzioni.
Per aprire e modificare Reference.cs, eseguire la procedura seguente:
Fare doppio clic su NorthwindCacheWebRef per aprirlo in Visualizzatore oggetti.
Espandere il nodo OCSDeviceApp.NorthwindCacheWebRef.
Fare clic con il pulsante destro del mouse su NorthwindCacheSyncService e scegliere Vai a definizione.
Reference.cs viene aperto nell'editor del codice.
Aggiungere il codice seguente dopo l'ultima istruzione using o imports:
[C#]
using Microsoft.Synchronization; using Microsoft.Synchronization.Data;
[Visual Basic]
Imports Microsoft.Synchronization.Data Imports Microsoft.Synchronization
Rimuovere dal file tutte le classi e le enumerazioni a eccezione di NorthwindCacheSyncService.
Nota: I tipi rimossi sono già definiti negli spazi dei nomi Microsoft.Synchronization e Microsoft.Synchronization.Data appena importati.
Per creare un form con associazione a dati utilizzato per visualizzare i dati e avviare la sincronizzazione
In Esplora soluzioni fare doppio clic su Form1 per aprirlo nella finestra di progettazione di Visual Studio.
Trascinare il nodo Customers dalla finestra Origini dati in Form1.
In Form1 fare clic sulla voce di menu a sinistra e digitare Sincronizza. Impostare la proprietà Nome su SynchronizeMenuItem.
Nota: |
---|
Per avviare il processo di sincronizzazione, l'utente dovrà fare clic su Sincronizza. |
In DataGridView verrà visualizzata la tabella Customers dalla cache del database locale (il database Northwind.sdf individuato nel progetto).
Per aggiungere un cliente al database Northwind locale
In Esplora soluzioni fare doppio clic su Form1 per aprirlo nella finestra di progettazione.
Fare clic sulla voce di menu a destra del form e digitare Inserisci riga. Impostare la proprietà Nome della voce di menu su InsertRowMenuItem.
Fare doppio clic sul pulsante Inserisci riga per creare un gestore di eventi Click relativi al menu e aprire il form nell'editor del codice.
Aggiungere codice per la connessione (e l'inserimento di una riga) al database SQL Server Compact locale.
Dim conn = New System.Data.SqlServerCe.SqlCeConnection( _ "Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName( _ System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "Northwind.sdf") + _ ";Max Database Size=2047")) Try ' Connect to the local database conn.Open() ' Insert a row Dim cmd = conn.CreateCommand() cmd.CommandText = "INSERT INTO Customers ([CustomerID], [CompanyName]) Values('NEWRW', 'Northwind Traders')" cmd.ExecuteNonQuery() Catch ex As Exception Finally conn.Close() End Try ' Reload the DataSet/Datagrid from the local database CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "Northwind.sdf") + ";Max Database Size=2047"))); try { // Connect to the local database conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); // Insert a row cmd.CommandText = "INSERT INTO Customers ([CustomerID], [CompanyName]) Values('NEWRW', 'Northwind Traders')"; cmd.ExecuteNonQuery(); } finally { conn.Close(); } // Reload the DataSet/Datagrid from the local database customersTableAdapter.Fill(northwindDataSet.Customers);
Con InsertRowMenuItem viene inserita una nuova riga nella tabella Customers nel database locale.
Nota: In un secondo momento, quando si testa l'applicazione, è possibile verificare se la nuova riga viene visualizzata nel database remoto in seguito alla sincronizzazione.
Eseguire il test dell'applicazione
Prima di poter testare l'applicazione, è necessario collegare e inserire nell'alloggiamento l'emulatore del dispositivo di destinazione, per consentirne la connessione al servizio NorthwindCacheSyncService.
Per eseguire il test dell'applicazione
Scegliere Gestione emulatori di dispositivo dal menu Strumenti.
La finestra della gestione degli emulatori di dispositivo verrà visualizzata con un elenco di emulatori disponibili.
Fare clic con il pulsante destro del mouse su USA Windows Mobile 5.0 Pocket PC R2 Emulator (il dispositivo di destinazione per OCSWalkthrough) e fare clic su Connetti.
Verrà visualizzato l'emulatore di dispositivo Pocket PC - WM 5.0.
Nella finestra di gestione degli emulatori di dispositivo, fare clic con il pulsante destro del mouse sul dispositivo collegato e fare clic su Inserisci in alloggiamento.
Avrà luogo la connessione di Centro gestione dispositivi Windows Mobile (Windows Vista) o di ActiveSync all'emulatore di dispositivo inserito nell'alloggiamento. Se viene visualizzata la richiesta di Centro gestione dispositivi Windows Mobile o ActiveSync di configurare il dispositivo, fare clic su Connetti senza configurare il dispositivo (Windows Vista) o su Annulla.
Nota: La connessione a Centro gestione dispositivi Windows Mobile o ActiveSync consente all'emulatore di accedere a NorthwindCacheSyncService, in esecuzione nel computer desktop. Affinché l'emulatore di dispositivo si connetta, le impostazioni di connessione in Centro gestione dispositivi Windows Mobile o ActiveSync devono essere configurate per consentire le connessioni DMA.
Fare clic con il pulsante destro del mouse su OCSDeviceApp in Esplora soluzioni e scegliere Imposta come progetto di avvio.
Premere F5 per eseguire il debug.
Tornare al form nell'emulatore di dispositivo Pocket PC - WM 5.0 e fare clic su Inserisci riga. Il database locale e il database remoto non saranno più sincronizzati. Una nuova riga, tuttavia, risulterà visibile nella griglia dati.
Fare clic su Sincronizza.
Dall'applicazione in esecuzione nell'emulatore di dispositivo, utilizzare Esplora server/Esplora database, o un altro strumento di gestione del database, per connettersi al database del server remoto e verificare l'esistenza del nuovo record.
In Esplora server/Esplora database individuare la tabella Customers sul server database remoto, non la connessione a Northwind.sdf.
Fare clic con il pulsante destro del mouse sulla tabella Customers e scegliere Mostra dati tabella.
Verificare che la nuova riga sia presente.
Fare clic con il pulsante destro del mouse sulla nuova riga e scegliere Elimina. La sincronizzazione dei database verrà nuovamente annullata.
Tornare al form nell'emulatore di dispositivo e fare clic su Sincronizza.
Verificare che le modifiche al database remoto siano sincronizzate con il database locale e visualizzate nella griglia.
Chiudere il form. Interrompere il debug.
Vedere anche
Attività
Procedura: configurare la sincronizzazione dei dati in un'applicazione
Concetti
Applicazioni connesse occasionalmente (dispositivi)
Utilizzo di database SQL Server Compact 3.5 (dispositivi)
Cenni preliminari sulle applicazioni connesse occasionalmente
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2008 |
Argomento aggiunto. |
Modifica di funzionalità in SP1. |