Procédure pas à pas : ajout d'un cache de base de données locale à une application multicouche
Un cache de base de données locale, dans le contexte de Visual Studio, est une base de données SQL Server Compact 3.5 configurée pour synchroniser des données avec une base de données distante à l'aide de Microsoft Synchronization Services pour ADO.NET. Cette procédure pas à pas fournit des instructions pour ajouter une base de données SQL Server Compact 3.5 à l'application créée dans la rubrique Procédure pas à pas : création d'une application de données multicouche.
Dans cette procédure pas à pas, vous allez apprendre à effectuer les tâches suivantes :
Ajouter un élément Cache de base de données locale à un projet.
Configurer la synchronisation de données.
Incorporer des opérations de synchronisation dans le service de données existant.
Modifier le code qui charge des données afin qu'il extraie la table Customers du cache de base de données locale.
Ajouter du code pour initialiser le processus de synchronisation.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer des éléments suivants :
La solution et les projets associés créés dans la rubrique Procédure pas à pas : création d'une application de données multicouche.
Un accès à l'exemple de base de données Northwind. Pour plus d'informations, consultez Comment : installer des exemples de bases de données.
Notes
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de 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.
Ouverture de la solution NTierWalkthrough
Pour ouvrir la solution NTierWalkthrough
Dans le menu Fichier, pointez Ouvrir, cliquez sur Projet/Solution, puis naviguez vers l'emplacement du fichier NTierWalkthrough.sln.
Notes
Le fichier NTierWalkthrough, qui est créé dans la rubrique Procédure pas à pas : création d'une application de données multicouche, est nécessaire pour pouvoir suivre cette procédure pas à pas. Complétez la rubrique Procédure pas à pas : création d'une application de données multicouche, en enregistrant tous les projets lorsque vous avez terminé, si ce n'est pas encore fait.
Ajout de la mise en cache de base de données locale à NTierWalkthrough
Dans la mesure où un cache de base de données locale est une base de données SQL Server Compact 3.5 située sur le client, ajoutez le cache de base de données locale au projet PresentationTier. Étant donné que cette procédure pas à pas indique comment mettre en cache la table Customers, vous nommerez le cache de base de données locale CustomersCache.
Notes
Dans cette procédure pas à pas, le cache de base de données locale est nommé CustomersCache car il utilise uniquement la table Customers, mais plusieurs tables peuvent être ajoutées à un cache de base de données locale.
Pour ajouter la mise en cache de données locale à la couche de présentation
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur PresentationTier, puis cliquez sur Ajouter un nouvel élément.
Cliquez sur le modèle Cache de base de données locale.
Tapez CustomersCache pour le Nom.
Cliquez sur Ajouter.
La boîte de dialogue Configurer la synchronisation des données s'affiche.
Configuration de la synchronisation de données
Pour configurer la synchronisation de données, sélectionnez la connexion de données au serveur et sélectionnez les tables que vous souhaitez mettre en cache localement dans votre application. Pour cette procédure pas à pas, définissez comme connexion au serveur la version SQL Server de la base de données Northwind et ajoutez la table Customers au cache local. En outre, dans la mesure où vous ajoutez le cache de base de données locale à une application multicouche, vous devez définir les options avancées de manière à générer les composants de synchronisation du serveur dans un projet séparé : DataService.
Pour configurer la synchronisation de données dans une application multicouche
Définissez comme Connexion au serveur la version SQL Server de la base de données Northwind.
Cliquez sur le bouton Ajouter afin d'afficher la boîte de dialogue Configurer les tables pour une utilisation hors connexion.
Activez la case à cocher associée à la table Customers et cliquez sur OK. (Conservez les valeurs par défaut.)
Cliquez sur Avancé.
Dans la liste Emplacement du projet serveur, sélectionnez DataService.
Cliquez sur OK.
Les composants de synchronisation sont générés, les données sont synchronisées pour la première fois (la base de données locale est créée dans le projet et remplie avec les données) et l'Configuration de source de données (Assistant) s'ouvre.
Sélectionnez la table Customers, puis activez la case à cocher associée sur la page Choisir vos objets de base de données.
Tapez LocalNorthwindCustomers pour Nom du DataSet et cliquez sur Terminer.
Activation de la synchronisation dans le service de données existant
Les composants de synchronisation générés ont été ajoutés au projet DataService, mais ils doivent encore être implémentés par le service. Le SyncContract généré contient les informations requises par le service. Ces informations apparaissent comme des commentaires dans le fichier. Copiez les informations nécessaires dans la section appropriée du fichier App.config du service.
Pour ajouter les informations de service au fichier App.config
Ouvrez le fichier CustomersCache.Server.SyncContract en double-cliquant dessus dans l'Explorateur de solutions.
Localisez la ligne de commentaire qui se présente comme suit :
<endpoint address ="" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
Copiez la ligne sans le caractère de commentaire.
Ouvrez le fichier App.config du projet DataService en double-cliquant dessus dans l'Explorateur de solutions.
Recherchez le commentaire <!-- Metadata Endpoints -->. Ajoutez la ligne que vous avez copiée à l'étape 3 sous la ligne qui commence par <endpoint address = "mex".
Tapez un nom (par exemple, ServeurSync) pour l'adresse de point de terminaison que vous venez de coller afin d'obtenir un code semblable au suivant :
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <endpoint address ="SyncServer" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
Dans le menu Générer, cliquez sur Générer la solution.
Pour ajouter les opérations du service de synchronisation au service de données existant
Ouvrez le fichier CustomersCache.Server.SyncContract en double-cliquant dessus dans l'Explorateur de solutions.
Remplacez le nom de la classe CustomersCacheSyncService par Service1. Les exemples de code suivants montrent la déclaration de classe comme elle doit apparaître après la modification du nom de la classe. (Les utilisateurs C# doivent également modifier le nom du constructeur.)
Partial Public Class Service1 Inherits Object Implements ICustomersCacheSyncContract ...
public partial class Service1 : object, ICustomersCacheSyncContract {...
Pour les utilisateurs C# :
Modifiez la déclaration de classe de Service1 (dans le fichier Service1.cs) de sorte qu'elle devienne une classe partielle pour que la déclaration se présente comme suit :
public partial class Service1 : object, ICustomersCacheSyncContract { private CustomersCacheServerSyncProvider _serverSyncProvider; public Service1() {...
Dans le menu Générer, cliquez sur Générer la solution.
Étant donné que les opérations de synchronisation ont été ajoutées au service existant, vous devez mettre à jour la référence de service dans le projet PresentationTier.
Pour mettre à jour la référence de service
Dans l'Explorateur de solutions, localisez ServiceReference1 dans le projet PresentationTier.
Cliquez avec le bouton droit sur ServiceReference1 et cliquez sur Mettre à jour la référence de service.
Modification du formulaire pour charger les données Customers à partir du cache local
Le formulaire dans la couche de présentation obtient actuellement ses données du service de données. Par conséquent, vous devez modifier le code pour charger les données à partir de la copie locale de la table Customers dans la base de données SQL Server Compact 3.5. La table Orders est encore chargée avec les données retournées par le projet DataService.
Pour modifier Form1 afin de charger les données Customers à partir du cache de base de données locale
Ouvrez Form1 dans l'éditeur de code.
Remplacez le code existant Form1_Load par celui-ci :
Using DataSvc As New ServiceReference1.Service1Client ' Create a CustomersTableAdapter to load data from ' the local database cache. Dim CustomersTableAdapter As New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter NorthwindDataSet.Customers.Merge(CustomersTableAdapter.GetData) NorthwindDataSet.Orders.Merge(DataSvc.GetOrders) End Using
using (ServiceReference1.Service1Client DataSvc = new ServiceReference1.Service1Client()) { LocalNorthwindCustomersTableAdapters.CustomersTableAdapter customersTableAdapter = new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter(); northwindDataSet.Customers.Merge(customersTableAdapter.GetData()); northwindDataSet.Orders.Merge(DataSvc.GetOrders()); }
Test de l'application
Exécutez l'application. Les données sont extraites du cache de base de données locale et du service de données.
Pour tester l'application
Appuyez sur F5.
Les données de la table Customers sont extraites du cache de base de données locale et les données de la table Orders du service de données.
Fermez le formulaire.
Synchronisation des données
Maintenant que la couche de présentation est configurée pour afficher les tables des sources correctes, l'étape suivante consiste à ajouter le code pour initialiser la synchronisation. Vous allez ajouter un bouton au formulaire pour démarrer le processus de synchronisation.
Pour synchroniser les données du cache de base de données locale et de la base de données distante
Ouvrez Form1 en mode Design.
Dans le formulaire, cliquez sur Toolstrip et ajoutez-lui un bouton.
Nommez ce bouton BoutonSync.
Double-cliquez sur BoutonSync pour créer un gestionnaire d'événements SyncButton_Click.
Le code suivant démarre le processus de synchronisation. Ajoutez-le au gestionnaire d'événements.
Dim syncAgent As CustomersCacheSyncAgent = New CustomersCacheSyncAgent Using syncClient As New ServiceReference1.CustomersCacheSyncContractClient syncAgent.RemoteProvider = New Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient) Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize NorthwindDataSet.Customers.Merge(New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()) Dim syncSummary As String = "Total changes downloaded: " & _ syncStats.TotalChangesDownloaded.ToString() & vbCrLf & _ "Last successful synchronization: " & _ syncStats.SyncCompleteTime.ToString MessageBox.Show(syncSummary) End Using
CustomersCacheSyncAgent syncAgent = new CustomersCacheSyncAgent(); using (ServiceReference1.CustomersCacheSyncContractClient syncClient = new ServiceReference1.CustomersCacheSyncContractClient()) { syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient); Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize(); northwindDataSet.Customers.Merge(new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()); string syncSummary = "Total changes downloaded: " + syncStats.TotalChangesDownloaded.ToString() + Environment.NewLine + "Last successful synchronization: " + syncStats.SyncCompleteTime.ToString(); MessageBox.Show(syncSummary); }
Les données de la table Customers sont extraites du cache de base de données locale et les données de la table Orders du service de données.
Fermez le formulaire.
Test de l'application
Pour tester l'application
Appuyez sur F5.
Pendant que l'application s'exécute, 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 modifier des enregistrements.
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).
Cliquez avec le bouton droit sur la table Customers et sélectionnez Afficher les données de la table.
Modifiez un ou plusieurs enregistrements et validez les modifications. Quittez la ligne modifiée.
Revenez au formulaire et cliquez sur BoutonSync.
Vérifiez que les modifications apportées à la base de données distante sont synchronisées avec la base de données locale et sont affichées dans la grille.
Fermez le formulaire. (Arrêtez le débogage.)
Étapes suivantes
Selon les spécifications de votre application, vous pouvez exécuter différentes étapes après l'ajout du cache de base de données locale à une application multicouche. Par exemple, vous pouvez apporter les améliorations suivantes à cette application :
Ajout de la validation au groupe de données. Pour plus d'informations, consultez Procédure pas à pas : ajout d'une validation à une application de données multicouche.
Activation de la synchronisation bidirectionnelle. Pour plus d'informations, consultez Comment : configurer une base de données locale et distante pour la synchronisation bidirectionnelle.
Voir aussi
Tâches
Comment : ajouter du code aux groupes de données dans des applications multicouches
Procédure pas à pas : ajout d'une validation à une application de données multicouche
Procédure pas à pas : création d'une application occasionnellement connectée
Comment : configurer une base de données locale et distante pour la synchronisation bidirectionnelle
Concepts
Vue d'ensemble des applications de données multicouches
Vue d'ensemble des applications occasionnellement connectées
SQL Server Compact 3.5 et Visual Studio
Nouveautés du développement d'applications de données