Vue d'ensemble des applications occasionnellement connectées

Mise à jour : Juillet 2008

Une application occasionnellement connectée est une application qui utilise des données d'une base de données distante mais qui ne dispose pas toujours d'un accès à la base de données en question. Les applications occasionnellement connectées sont également utilisées lorsque l'accès est disponible continuellement, mais il n'est peut-être pas efficace d'interroger continuellement des données qui sont rarement modifiées dans la base de données distante, comme une liste de départements ou des catégories de produits. Dans ce cas, les applications peuvent utiliser les données d'une base de données locale qui est située sur le client et synchroniser périodiquement les données avec la base de données distante sur le serveur.

En d'autres termes, si votre application requiert les données d'une base de données distante qu'il n'est pas nécessaire de récupérer de façon continue à partir de la base de données, vous pouvez utiliser un cache de base de données locale pour stocker les données sur l'ordinateur client ou directement à l'intérieur de votre application. Prenons l'exemple d'une application de gestion des stocks qui utilise des données de plusieurs tables dans une base de données. Le nombre d'éléments en stock pour n'importe quelle partie individuelle constitue une partie des données importante qui change continuellement, donc l'application doit toujours refléter les valeurs actuelles dans la base de données, si cela est possible. Toutefois, votre application affiche également une liste des sociétés d'expédition valides qui change rarement. Ces sociétés d'expédition valides sont stockées dans la table des expéditeurs (Shippers) et n'ont pas à être récupérées à chaque fois que les données sont interrogées à partir de la base de données. En stockant cette table des expéditeurs dans un cache de base de données locale, vous pouvez diminuer le nombre d'allers-retours inutiles que votre application doit effectuer vers la base de données distante. Par conséquent, en plus d'utiliser un cache de base de données locale pour les applications qui disposent d'une connectivité occasionnelle, vous pouvez envisager de stocker des données qui changent rarement ou qui changent selon une planification connue dans un cache de base de données locale.

Vous pouvez configurer la mise en cache pour stocker des tables individuelles, des ensembles de tables ou des enregistrements spécifiques interrogés à partir d'une table (par exemple, uniquement des clients qui ont un représentant commercial particulier).

La synchronisation de données entre les bases de données client et serveur est facilitée par Microsoft Synchronization Services pour ADO.NET (l'espace de noms Microsoft.Synchronization.Data). Vous pouvez configurer de façon visuelle la synchronisation dans Visual Studio en utilisant la boîte de dialogue Configurer la synchronisation des données.

À partir de Visual Studio 2008 SP1, outre la boîte de dialogue Configurer la synchronisation des données, vous pouvez également utiliser l'Assistant Configuration de source de données pour configurer la synchronisation. Au cours de la configuration d'un groupe de données typé, sélectionnez l'option Activer la mise en cache de la base de données locale dans la page Choisir vos objets de base de données de l'Assistant. Pour plus d'informations, consultez Procédure pas à pas : création d'une application occasionnellement connectée à l'aide de l'Assistant Configuration de source de données.

Remarque :

Dans les projets Smart Device, le concepteur de synchronisation ne peut pas être démarré à partir de l'Assistant Configuration de source de données. Pour plus d'informations, consultez Applications occasionnellement connectées (Smart Devices).

En outre, la prise en charge du suivi des modifications dans SQL Server 2008 a été ajoutée pour Visual Studio 2008 SP1. Vous pouvez activer le suivi des modifications SQL Server 2008 lorsque vous configurez la synchronisation à partir de la boîte de dialogue Configurer la synchronisation des données ou l'Assistant Configuration de source de données. Pour plus d'informations, consultez Comment : configurer la synchronisation de données pour l'utilisation du suivi des modifications SQL Server.

API Synchronization Services (Microsoft.Synchronization.Data)

Microsoft Synchronization Services pour ADO.NET est conçu pour les applications occasionnellement connectées. Il vous permet de synchroniser des données à partir de différentes sources sur deux couches, plusieurs couches et des architectures basées sur des services. Au lieu de répliquer simplement une base de données et son schéma, l'API Synchronization Services propose un ensemble de composants pour synchroniser des données entre des services de données et un magasin local. Les applications sont de plus en plus utilisées sur les clients mobiles qui n'ont pas de connexion réseau cohérente ou fiable à un serveur central, tels que les ordinateurs et les périphériques portables. Il est important que ces applications utilisent une copie locale des données sur le client. Il est également requis de synchroniser la copie locale des données avec les données sur un serveur central lorsqu'une connexion réseau est disponible. L'API Synchronization Services, conçu sur le modèle des API d'accès aux données ADO.NET, propose une méthode intuitive pour synchroniser les données. La création d'applications pour les environnements occasionnellement connectés est alors une extension logique de la création d'applications pour lesquelles vous pouvez dépendre d'une connexion réseau cohérente.

Remarque :

Dans les projets Smart Device, l'architecture à deux niveaux n'est pas prise en charge. Pour plus d'informations, consultez Applications occasionnellement connectées (Smart Devices).

Installation de l'API et de la documentation de Synchronization Services

L'API Synchronization Services ne fait pas partie de .NET Framework. En effet, elle est installée dans le cadre de l'installation de SQL Server Compact 3.5. (Par défaut, SQL Server Compact 3.5 est installé lorsque vous installez Visual Studio.) Par défaut, la documentation de Synchronization Services n'est pas installée. Par conséquent, elle n'est disponible que si l'aide est configurée pour une utilisation en ligne. Pour installer la documentation de Synchronization Services pour une utilisation locale, commencez par télécharger la collection d'aide sur le site Web Documentation en ligne de Microsoft Synchronization Services pour ADO.NET (en anglais).

Incorporation de la synchronisation des données dans les applications à l'aide de Visual Studio

Pour incorporer la synchronisation de données dans votre application, Visual Studio fournit un modèle Cache de base de données locale. Ce modèle est disponible en tant que nouveau modèle d'élément de projet. (Dans le menu Projet, cliquez sur Ajouter un nouvel élément.) Pour plus d'informations, consultez Comment : configurer la synchronisation de données dans une application.

Remarque :

Le modèle Cache de base de données locale ne peut pas être ajouté directement à un projet Smart Device. Au lieu de cela, vous devez ajouter le Cache de base de données locale au WCF de couche intermédiaire ou au projet de service Web, puis fractionner les composants de synchronisation générés dans le projet Smart Device. Pour plus d'informations, consultez Applications occasionnellement connectées (Smart Devices).

À partir de Visual Studio 2008 SP1, outre la boîte de dialogue Configurer la synchronisation des données, vous pouvez également utiliser l'Assistant Configuration de source de données pour configurer la synchronisation. Au cours de la configuration d'un groupe de données typé, sélectionnez l'option Activer la mise en cache de la base de données locale dans la page Choisir vos objets de base de données de l'Assistant. Pour plus d'informations, consultez Procédure pas à pas : création d'une application occasionnellement connectée à l'aide de l'Assistant Configuration de source de données.

L'ajout d'un Cache de base de données locale ouvre la boîte de dialogue Configurer la synchronisation des données. Vous pouvez utiliser cette boîte de dialogue pour indiquer des informations spécifiques à propos du client et du serveur afin d'installer les composants de synchronisation requis. Le cache de base de données locale utilise une base de données SQL Server Compact 3.5 sur le client pour stocker des données localement. Vous pouvez utiliser une base de données SQL Server Compact 3.5 existante comme cache de base de données locale. Si vous n'avez pas encore de base de données locale, vous pouvez utiliser la boîte de dialogue Configurer la synchronisation des données pour créer une base de données locale. Pour créer une base de données SQL Server Compact 3.5 locale, vous pouvez définir la connexion client (dans la boîte de dialogue Configurer la synchronisation des données) pour créer une base de données SQL Server Compact 3.5 à partir des tables sélectionnées dans Connexion serveur.

Remarque :

La boîte de dialogue Configurer la synchronisation des données vous permet de configurer Microsoft Synchronization Services pour ADO.NET uniquement pour les scénarios de téléchargement. Cela signifie qu'après avoir configuré la synchronisation de données dans cette boîte de dialogue, Microsoft.Synchronization.Data.SyncAgent.Synchronize met à jour uniquement la base de données locale avec les modifications identifiées sur la base de données distante. Les modifications apportées aux données sur la base de données locale ne sont pas téléchargées sur la base de données distante. Une fois que vous avez configuré la synchronisation de données à l'aide de la boîte de dialogue Configurer la synchronisation des données, vous pouvez activer par programme les téléchargements (synchronisation bidirectionnelle) pendant la synchronisation. Pour plus d'informations, consultez Comment : configurer une base de données locale et distante pour la synchronisation bidirectionnelle.

Configuration de la base de données distante pour la synchronisation

Pour que la synchronisation de données réussisse, il est nécessaire d'ajouter quelques éléments dans chaque table sur la base de données distante avec laquelle vous souhaitez effectuer la synchronisation. La boîte de dialogue Configurer la synchronisation des données crée des scripts SQL à exécuter sur la base de données distante afin de créer les objets nécessaires (les objets répertoriés dans le tableau ci-dessous). Tous les scripts SQL créés par le concepteur de synchronisation sont enregistrés dans un dossier SQLScripts dans votre projet.

Remarque :

Les scripts SQL générés par la boîte de dialogue Configurer la synchronisation des données sont exécutés par défaut. Vous pouvez indiquer si vous souhaitez générer et exécuter les scripts en définissant l'option Génération de script de la boîte de dialogue Configurer les tables pour une utilisation hors connexion.

Le comportement par défaut de la boîte de dialogue Configurer la synchronisation des données déclenche automatiquement l'exécution des scripts et met à jour la base de données distante à la fermeture de la boîte de dialogue. Désactivez la case à cocher Exécuter les scripts lorsque cette boîte de dialogue est fermée si vous ne souhaitez pas exécuter automatiquement les scripts. En outre, si la base de données distante dispose déjà des colonnes de suivi, des déclencheurs et des tables des éléments supprimés requis, aucun script n'est généré. En d'autres termes, si aucune modification de la base de données distante n'est requise, aucun script n'est créé.

Le tableau suivant répertorie les éléments requis dans la base de données distante et fournit une explication pour chacun de ces éléments :

Ajouts à chaque table synchronisée sur la base de données distante

Explication

Colonne LastEditDate

Cette colonne doit avoir la valeur DateTime ou TimeStamp dans chaque table qui est synchronisée. Cette valeur est comparée à la colonne LastEditDate sur le client pour identifier les enregistrements qui ont été modifiés sur le serveur depuis le dernier appel de synchronisation.

Colonne CreationDate

Cette colonne doit avoir la valeur DateTime ou TimeStamp dans chaque table qui est synchronisée. Cette valeur est comparée à la colonne CreationDate sur le client pour identifier les enregistrements qui ont été ajoutés au serveur depuis le dernier appel de synchronisation.

Table des éléments supprimés (NomTable_Deleted)

Les éléments sont déplacés vers cette table lorsqu'ils sont supprimés de la table sur le serveur de base de données. Cela permet d'identifier les enregistrements qui ont été supprimés du serveur depuis le dernier appel de synchronisation. Chaque table qui est synchronisée requiert une table des éléments supprimés pour effectuer le suivi des enregistrements supprimés de la table distante.

DeletionTrigger (NomTable_DeletionTrigger)

Ce déclencheur s'exécute à chaque fois qu'un enregistrement est supprimé de la table de la base de données serveur. Les enregistrements supprimés sont déplacés vers la table des éléments supprimés. Ils sont déplacés vers la table des éléments supprimés car les enregistrements dans la base de données client qui ne sont pas dans la base de données serveur peuvent être traités comme des nouveaux enregistrements et être ajoutés à nouveau au serveur. Synchronization Services vérifie la table des éléments supprimés pour déterminer s'il doit supprimer un enregistrement supprimé de la base de données client au lieu de l'ajouter à nouveau à la base de données serveur.

InsertTrigger (NomTable_InsertTrigger)

Ce déclencheur remplit la colonne CreationDate avec la date et l'heure actuelle lorsque de nouveaux enregistrements sont ajoutés.

UpdateTrigger (NomTable_UpdateTrigger)

Ce déclencheur remplit la colonne LastEditDate avec la date et l'heure actuelle lorsque des enregistrements existants sont modifiés.

Démarrage du processus de synchronisation à partir d'une application

Après avoir fourni les informations requises dans la boîte de dialogue Configurer la synchronisation des données, ajoutez le code dans votre application pour initialiser la synchronisation. Il est important de comprendre que la synchronisation des données met à jour la base de données locale et non pas la table dans le groupe de données ou tout autre objet dans votre application. N'oubliez pas de recharger votre source de données d'application avec les données mises à jour de la base de données locale. Par exemple, appelez la méthode TableAdapter.Fill pour charger la table de données du groupe de données avec les données mises à jour à partir de la base de données locale.

Ajoutez le code suivant dans votre application à l'endroit où vous souhaitez initialiser le processus de synchronisation :

' 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.

Voir aussi

Tâches

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

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

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

Concepts

SQL Server Compact 3.5 et Visual Studio

Applications occasionnellement connectées (Smart Devices)

Autres ressources

Accès aux données (Visual Studio)

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'un paragraphe concernant l'incorporation de la synchronisation des données à partir de l'Assistant Configuration de source de données.

Modifications de fonctionnalités dans le SP1.

Juillet 2008

Ajout d'un paragraphe sur l'activation du suivi des modifications SQL Server lors de la configuration de la synchronisation des données.

Modifications de fonctionnalités dans le SP1.

Juillet 2008

Ajout de remarques sur la synchronisation dans les projets Smart Device.

Modifications de fonctionnalités dans le SP1.