Procédure pas à pas : création d'une application Smart Device occasionnellement connectée

Mise à jour : Juillet 2008

Cette procédure pas à pas fournit des instructions détaillées pour configurer la synchronisation de données dans une application Smart Device occasionnellement connectée. L'exemple d'application ajoute un client au cache de la base de données locale et synchronise les modifications avec une base de données distante. Il affiche également les données client dans un Windows Form : cela vous permet de vérifier que la synchronisation est réussie.

Au cours de cette procédure pas à pas, vous exécuterez les étapes suivantes :

  • Créer une nouvelle application Smart Device.

  • Ajouter une nouvelle bibliothèque de services WCF (Windows Communication Foundation) qui servira de couche intermédiaire entre le cache de la base de données locale et la base de données distante.

    Remarque :

    La bibliothèque de services de couche intermédiaire est requise parce que Synchronization Services for ADO.NET (Devices) ne prend pas en charge la synchronisation directe à deux couches.

  • Ajouter un nouveau cache de base de données locale à un projet.

  • Configurer des paramètres de synchronisation.

  • Configurer et démarrer le service WCF.

  • Ajouter des fonctionnalités de synchronisation à votre application Smart Device.

  • tester l'application.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez :

Création de l'application Smart Device

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour créer un projet sur l'ordinateur de bureau

  1. Dans le menu Fichier, créez un projet qui utilise Visual Basic ou Visual C#.

    Remarque :

    La boîte de dialogue Configurer la synchronisation des données est prise en charge dans les projets Visual Basic et C#. Par conséquent, veillez à sélectionner l'un de ces langages.

  2. Nommez la solution Procédure pas à pas et le projet OCSDeviceApp.

  3. Sous Types de projets, cliquez sur Smart Device, puis sur le modèle Projet Smart Device.

  4. Cliquez sur OK.

    La boîte de dialogue Ajoutez un nouveau projet Smart Device s'affiche. Par défaut, le système d'exploitation cible Windows Mobile 5.0 Pocket PC SDK, .NET Compact Framework version 3.5 et le modèle Application Smart Device sont sélectionnés.

  5. Cliquez sur OK.

    Le projet OCSDeviceApp est créé et ajouté à l'Explorateur de solutions.

Création d'un service WCF

Contrairement aux applications bureautiques, le cache de la base de données SQL Server Compact locale ne peut pas se synchroniser directement avec la base de données SQL Server distante pour les projets Smart Device. Vous devez créer une bibliothèque de services WCF qui sert de couche intermédiaire entre les deux bases de données. L'application Smart Device utilise des services exposés par le service WCF pour la synchronisation.

Pour ajouter une bibliothèque de services WCF à la solution

  1. Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.

  2. Nommez le projet MiddleTierServiceLibrary.

  3. Cliquez sur WCF sous Types de projets, puis sur le modèle Bibliothèque de services WCF.

  4. Cliquez sur OK.

    Le projet MiddleTierServiceLibrary est créé et ajouté à l'Explorateur de solutions.

Ajout d'un cache de base de données locale

  • Contrairement aux applications bureautiques, le modèle Cache de base de données locale n'est pas disponible dans la boîte de dialogue Ajouter un nouvel élément d'un projet Smart Device. C'est à vous d'ajouter un cache de base de données locale au projet de services Web ou WCF de couche intermédiaire.

Pour ajouter un cache de base de données locale à un projet

  1. Cliquez avec le bouton droit sur le projet MiddleTierServiceLibrary, pointez sur Ajouter, puis cliquez sur Nouvel élément.

  2. Cliquez sur le modèle Cache de base de données locale et tapez NorthwindCache.sync dans la zone Nom.

  3. Cliquez sur Ajouter.

    Un fichier NorthwindCache.sync est ajouté à l'Explorateur de solutions et la boîte de dialogue Configurer la synchronisation des données s'affiche. NorthwindCache.sync stocke des informations de configuration de la synchronisation.

Configuration des paramètres de synchronisation

Pour créer des connexions de données aux bases de données client et serveur

  1. Utilisez la boîte de dialogue Configurer la synchronisation des données pour créer une connexion à la base de données Northwind que vous avez installée avec les composants requis pour cette procédure pas à pas. Il s'agit de la base de données distante externe à votre application Smart Device. Vous pouvez sélectionner une Connexion serveur existante à la base de données Northwind SQL Server ou, s'il n'existe pas de connexion, cliquer sur Nouveau pour créer une connexion à la base de données Northwind SQL Server.

    Remarque :

    Vous pouvez activer le suivi des modifications SQL Server, mais uniquement après que la connexion au serveur de la base de données distante ait été configurée pour se connecter à une base de données SQL Server 2008. Pour plus d'informations, consultez Comment : configurer la synchronisation de données pour l'utilisation du suivi des modifications SQL Server.

  2. Acceptez la valeur par défaut Northwind.sdf (nouveau) pour Connexion client. La boîte de dialogue Configurer la synchronisation des données crée une base de données SQL Server Compact 3.5 et l'ajoute à votre projet. Pour plus d'informations sur les options de connexion de données disponibles, consultez Comment : créer une connexion de données à la base de données Northwind.

    Après avoir sélectionné la connexion au serveur, la boîte de dialogue Configurer la synchronisation des données interroge la base de données distante du serveur pour obtenir la liste des tables disponibles. Cette boîte de dialogue active également le bouton Ajouter, mais uniquement après la récupération de la liste des tables disponibles.

    Remarque :

    Notez que le bouton OK n'est pas activé à la fin de cette étape. En effet, aucune table n'a été sélectionnée pour la synchronisation. La section suivante explique comment ajouter des tables.

Pour ajouter et configurer des tables pour la mise en cache locale

  1. Cliquez sur Ajouter pour ouvrir la boîte de dialogue Configurer les tables pour une utilisation hors connexion.

  2. Sélectionnez la table Customers.

    Remarque :

    Vous pouvez modifier le comportement de synchronisation par défaut de chaque table que vous sélectionnez dans la boîte de dialogue Configurer les tables pour une utilisation hors connexion. Pour plus d'informations, consultez Comment : configurer la synchronisation de données dans une application.

  3. Acceptez les valeurs de colonne et de table par défaut. Cliquez sur OK. La boîte de dialogue Configurer la synchronisation des données crée des colonnes de suivi et une table des éléments supprimés.

    La table Customers est ajoutée à la liste Tables mises en cache.

Pour fractionner des composants de synchronisation entre les projets serveur et client

  1. Dans la boîte de dialogue Configurer la synchronisation des données, cliquez sur Avancé.

  2. Dans le menu déroulant Emplacement du projet client, sélectionnez OCSDeviceApp.

  3. Cliquez sur OK.

    Les composants seront divisés entre le projet client et le projet serveur, une fois la configuration de la synchronisation des données effectuée. De son côté, la boîte de dialogue Générer des scripts SQL s'affiche. Par défaut, elle génère des scripts qui gèrent des colonnes et des tables de suivi pour les éléments supprimés et mis à jour dans la base de données du serveur.

  4. Cliquez sur OK.

    Les scripts SQL générés sont enregistrés dans le projet serveur. La base de données client Northwind.sdf est créée dans le projet client et est synchronisée avec la base de données du serveur pour la première fois.

  5. Lorsque l'Assistant Configuration de source de données apparaît, sélectionnez la table Customers.

  6. Cliquez sur Terminer.

  7. NorthwindDataSet.xsd est ajouté au projet client et toutes les boîtes de dialogue se ferment.

Maintenant que la synchronisation est configurée, les éléments suivants sont ajoutés au projet client :

Élément

Description

Northwind.sdf

  • Fichier de base de données local qui contient des données mises en cache à partir de SQL Server.

NorthwindCache.Client.sync

  • Fichier XML qui contient des informations de configuration de la synchronisation. Double-cliquez sur ce fichier pour ouvrir la boîte de dialogue Configurer la synchronisation des données.

NorthwindCache.Client.Designer.cs (ou .vb)

Fichier de code qui contient des définitions pour le fournisseur de synchronisation client et l'agent de synchronisation. Il contient également des tables de synchronisation pour la base de données locale. Pour plus d'informations, consultez Architecture et classes pour la synchronisation client et serveur.

NorthwindDataSet.xsd

  • Dataset typé généré par l'Assistant Configuration de source de données. Ce groupe de données contient une table Customers remplie avec les données stockées dans la base de données locale.

References\Microsoft.Synchronization.Data

References\Microsoft.Synchronization.Data.SqlServerCe

Références requises à Microsoft Synchronization Services for ADO.NET.

Les éléments suivants sont ajoutés au projet serveur :

Élément

Description

NorthwindCache.sync

Fichier XML qui contient des informations de configuration de la synchronisation. Double-cliquez sur ce fichier pour ouvrir la boîte de dialogue Configurer la synchronisation des données.

NorthwindCache.Designer.cs (ou .vb)

Contient des définitions pour le fournisseur de synchronisation du serveur et l'adaptateur de synchronisation pour la base de données du serveur. Pour plus d'informations, consultez Architecture et classes pour la synchronisation client et serveur.

NorthwindCache.SyncContract.cs (ou .vb)

Fichier de code qui contient la définition du contrat WCF et son implémentation.

Dossier SQLScripts

Dossier de scripts. Les scripts de ce dossier permettent d'effectuer le suivi des modifications apportées à la base de données sur le serveur. Certains des scripts de ce dossier créent les colonnes de suivi et la table des éléments supprimés. D'autres créent des déclencheurs qui suivent les modifications sur le serveur.

Remarque :

Les scripts SQL sont créés uniquement si des modifications sont requises sur le serveur. Aucun script n'est créé si le serveur contient déjà une table des éléments supprimés et des colonnes de suivi.

Dossier SQLUndoScripts

Les scripts de ce dossier suppriment les colonnes de suivi, la table des éléments et tous les déclencheurs utilisés pour suivre et répondre aux modifications de la base de données sur le serveur. Utilisez ces scripts pour annuler les modifications apportées à la base de données par la boîte de dialogue Configurer la synchronisation des données.

Remarque :

Les scripts SQL sont créés uniquement si des modifications sont requises sur le serveur. Aucun script n'est créé si le serveur contient déjà une table des éléments supprimés et des colonnes de suivi.

References\Microsoft.Synchronization.Data

References\Microsoft.Synchronization.Data.Server

Références requises à Microsoft Synchronization Services for ADO.NET.

Configuration et démarrage du service WCF

Pour configurer le service WCF (NorthwindCacheSyncService) généré par la boîte de dialogue Configurer la synchronisation des données

  1. Dans l'Explorateur de solutions, double-cliquez sur NorthwindCache.SyncContract.cs (ou .vb) pour ouvrir le fichier dans l'Éditeur de code.

  2. Ajoutez l'attribut XmlSerializerFormat() juste avant la définition de INorthwindSyncContract. L'Éditeur de code doit indiquer :

    [ServiceContractAttribute()]
    [XmlSerializerFormat()]
    public interface INorthwindCacheSyncContract {
    <ServiceContractAttribute()> _
    <XmlSerializerFormat()> _
    Public Interface INorthwindCacheSyncContract
    
  3. Dans l'Explorateur de solutions, double-cliquez sur App.config.

  4. Apportez les modifications XML suivantes au fichier App.config. Ces modifications configurent le projet de sorte qu'il héberge le NorthwindCacheSyncService généré par la boîte de dialogue Configurer la synchronisation des données au lieu du service par défaut (Service1) généré par le modèle de projet WCF.

    1. Remplacez <service name="MiddleTierServiceLibrary.Service1" behaviorConfiguration="MiddleTierServiceLibrary.Service1Behavior"> par <service name="MiddleTierServiceLibrary.NorthwindCacheSyncService" behaviorConfiguration="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">

    2. Remplacez <add baseAddress="https://localhost:8731/Design_Time_Addresses/MiddleTierServiceLibrary/Service1/" /> par <add baseAddress="http://<your computer name>:8731/NorthwindCacheSyncService/" />

    3. Remplacez <endpoint address="" binding="wsHttpBinding" contract="MiddleTierServiceLibrary.IService1"> par <endpoint address="" binding="basicHttpBinding" contract="MiddleTierServiceLibrary. INorthwindCacheSyncContract">

      Remarque :

      wsHttpBinding n'est pas pris en charge sur les appareils.

    4. Remplacez <dns value="localhost"/> par <dns value="<your computer name>"/>

    5. Remplacez <behavior name="MiddleTierServiceLibrary.Service1Behavior"> par <behavior name="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">

  5. Cliquez avec le bouton droit sur MiddleTierServiceLibrary dans l'Explorateur de solutions et cliquez sur Définir comme projet de démarrage.

  6. Pour démarrer le service WCF, cliquez sur Exécuter sans débogage dans le menu Déboguer.

    La boîte de dialogue Déployer OCSDeviceApp s'affiche.

  7. Cliquez sur Annuler, puis sur Oui pour continuer.

    Remarque :

    Vous démarrez uniquement le service WCF : l'émulateur de périphérique n'est pas encore requis.

    L'Hôte de service WCF est démarré (l'icône apparaît dans la zone de notification) et héberge le service. Le Client test WCF apparaît et vous permet de tester le service.

Fonctionnalités de synchronisation du codage dans votre application Smart Device

Les étapes précédentes ont configuré vos options de synchronisation des données. Vous devez à présent ajouter des fonctionnalités de synchronisation à votre application Smart Device.

Ajout d'une référence Web du projet au service WCF

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur OCSDeviceApp, puis cliquez sur Ajouter une référence Web.

    La boîte de dialogue Ajouter une référence Web s'affiche.

  2. Tapez l'adresse du service NorthwindCacheSyncService dans la zone URL, puis cliquez sur Aller à.

    Une fois le service Web NorthwindCacheSyncService trouvé, le bouton Ajouter une référence est activé.

    Remarque :

    L'adresse du service se trouve dans le fichier App.config.

  3. Nommez la référence Web NorthwindCacheWebRef, puis cliquez sur Ajouter une référence.

    NorthwindCacheWebRef apparaît sous Références Web dans l'Explorateur de solutions. Visual Studio génère le fichier Reference.cs : toutefois, celui-ci n'est pas visible dans l'Explorateur de solutions.

  4. Exécutez les étapes suivantes pour ouvrir et modifier Reference.cs :

    1. Double-cliquez sur NorthwindCacheWebRef pour l'ouvrir dans l'Explorateur d'objets.

    2. Développez le nœud OCSDeviceApp.NorthwindCacheWebRef.

    3. Cliquez avec le bouton droit sur NorthwindCacheSyncService et cliquez sur Atteindre la définition.

      Reference.cs est ouvert dans l'éditeur de code.

    4. Ajoutez le code suivant après la dernière instruction using ou imports :

      [C#]

      using Microsoft.Synchronization;
      using Microsoft.Synchronization.Data;
      

      [Visual Basic]

      Imports Microsoft.Synchronization.Data
      Imports Microsoft.Synchronization
      
    5. Supprimez toutes les classes et énumérations du fichier, à l'exception de NorthwindCacheSyncService.

      Remarque :

      Les types supprimés sont déjà définis dans les espaces de noms Microsoft.Synchronization et Microsoft.Synchronization.Data récemment importés.

Pour créer un formulaire lié aux données utilisé pour afficher des données et lancer la synchronisation

  1. Dans l'Explorateur de solutions, double-cliquez sur Form1 afin de l'ouvrir dans le concepteur Visual Studio.

  2. Depuis la fenêtre Sources de données, faites glisser le nœud Customers vers Form1.

Dans Form1, cliquez sur l'élément du menu de gauche et tapez Synchroniser maintenant. Affectez à sa propriété Name la valeur SynchronizeMenuItem.

Remarque :

L'utilisateur cliquera en définitive sur Synchroniser maintenant pour démarrer le processus de synchronisation.

DataGridView affiche la table Customers à partir du cache de la base de données locale (la base de données Northwind.sdf située dans le projet).

Pour ajouter un client à la base de données Northwind locale

  1. Dans l'Explorateur de solutions, double-cliquez sur Form1 afin de l'ouvrir dans le concepteur.

  2. Cliquez sur l'élément du menu situé à droite du formulaire et tapez Insérer une ligne. Affectez à la propriété Name de l'élément du menu la valeur InsertRowMenuItem.

  3. Double-cliquez sur le bouton Insérer une ligne pour créer un gestionnaire d'événements de type clic du menu et pour ouvrir le formulaire dans l'Éditeur de code.

  4. Ajoutez le code qui permet de se connecter à (et d'insérer une ligne dans) la base de données 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);
    

    InsertRowMenuItem insère une nouvelle ligne dans la table Customers de la base de données locale.

    Remarque :

    Par la suite, lorsque vous testerez l'application, vous pourrez vérifier que la nouvelle ligne apparaît dans la base de données distante après la synchronisation.

Test de l'application

Avant de pouvoir tester l'application, vous devez connecter et placer l'émulateur de périphérique cible sur la station d'accueil afin qu'il puisse se connecter au service NorthwindCacheSyncService.

Pour tester l'application

  1. Dans le menu Outils, cliquez sur Gestionnaire Device Emulator.

    La fenêtre Gestionnaire Device Emulator (DEM) s'affiche et présente la liste des émulateurs disponibles.

  2. Cliquez avec le bouton droit sur USA Windows Mobile 5.0 Pocket PC R2 Emulator (l'appareil cible pour OCSWalkthrough) et cliquez sur Se connecter.

    Device Emulator Pocket PC - WM 5.0 apparaît.

  3. Dans la fenêtre DEM, cliquez avec le bouton droit sur l'appareil connecté et cliquez sur Station d'accueil.

    Le Gestionnaire pour appareils Windows Mobile (Windows Vista) ou ActiveSync se connecte à l'émulateur de périphérique sur la station d'accueil. Si le Gestionnaire pour appareils Windows Mobile ou ActiveSync propose de configurer l'appareil, cliquez sur Se connecter sans configurer votre appareil (Windows Vista) ou sur Annuler.

    Remarque :

    La connexion à WMDC ou ActiveSync permet à l'émulateur d'accéder à NorthwindCacheSyncService, qui s'exécute sur l'ordinateur de bureau. Pour que l'émulateur de périphérique puisse se connecter, les paramètres de connexion dans WMDC ou ActiveSync doivent être configurés de manière à autoriser les connexions DMA.

  4. Cliquez avec le bouton droit sur OCSDeviceApp dans l'Explorateur de solutions et cliquez sur Définir comme projet de démarrage.

  5. Appuyez sur F5 pour déboguer.

  6. Revenez au formulaire dans Device Emulator Pocket PC - WM 5.0 et cliquez sur Insérer une ligne. La base de données locale et la base de données distante ne sont plus synchronisées. Néanmoins, une nouvelle ligne doit être visible dans le Datagrid.

  7. Cliquez sur Synchroniser maintenant.

  8. Depuis l'application qui s'exécute dans Microsoft Device Emulator, utilisez l'Explorateur de serveurs/Explorateur de bases de données (ou un autre outil de gestion de base de données) pour vous connecter à la base de données serveur distante et vérifier que le nouvel enregistrement existe.

    1. Dans l'Explorateur de serveurs/Explorateur de bases de données, localisez la table Customers sur le serveur de base de données distante (et non pas la connexion à Northwind.sdf).

    2. Cliquez avec le bouton droit sur la table Customers et sélectionnez Afficher les données de la table.

    3. Vérifiez que la nouvelle ligne existe.

    4. Cliquez avec le bouton droit sur la nouvelle ligne, puis cliquez sur Supprimer. Les bases de données seront à nouveau désynchronisées.

  9. Revenez au formulaire dans Microsoft Device Emulator et cliquez sur Synchroniser maintenant.

  10. Vérifiez que les modifications apportées à la base de données distante sont synchronisées à la base de données locale et sont affichées dans la grille.

  11. Fermez le formulaire. Arrêtez le débogage.

Voir aussi

Tâches

Comment : configurer la synchronisation de données dans une application

Concepts

Applications occasionnellement connectées (Smart Devices)

Utilisation de bases de données SQL Server Compact 3.5 (Smart Devices)

Vue d'ensemble des applications occasionnellement connectées

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'une rubrique.

Modifications de fonctionnalités dans le SP1.