Vue d'ensemble des applications occasionnellement connectées

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 visuellement la synchronisation dans Visual Studio à l'aide de la boîte de dialogue Configurer la synchronisation des données, ou en utilisant l'Assistant Configuration de source de données lorsque vous créez un dataset typé. Pour plus d'informations, consultez Comment : configurer la synchronisation de données dans une application et Procédure pas à pas : création d'une application occasionnellement connectée à l'aide de l'Assistant Configuration de source de données.

En outre, Visual Studio prend en charge la fonctionnalité de suivi des modifications dans SQL Server 2008. 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.

Limitation du cache de base de données locale dans SQL Azure

Vous pouvez utiliser le cache de base de données locale pour synchroniser des données trouvées dans SQL Azure par rapport à une base de données locale SQL Compact. Toutefois, les services nuage tels que SQL Azure tirent parti d'un environnement partagé au sein d'une architecture mutualisée, où les clients partagent le même matériel mais où les fournisseurs de données existants ne sont pas rationnalisés pour un environnement partagé au sein d'une architecture mutualisée. Pour protéger un client de l'impact d'une charge de travail initiée par un autre client, SQL Azure utilise un mécanisme de limitation afin de restreindre la quantité de ressources accordées à une requête unique. Plus précisément, SQL Azure limite la durée d'exécution d'une transaction et l'augmentation de la taille du journal qui peut se produire pour une seule transaction.

Utilisez ces fournisseurs pour les scénarios de base et les petites quantités de données. Si vous tentez de synchroniser une grande quantité de données, l'opération de synchronisation risque d'échouer en raison des problèmes de limitation. Si des problèmes de limitation surviennent, il n'y a aucun moyen de réduire le nombre de modifications pour éviter les échecs de synchronisation. En outre, ces fournisseurs ne représentent pas une solution idéale pour les scénarios plus complexes qui requièrent une synchronisation bidirectionnelle.

Pour plus d'informations sur les composants rationnalisés pour les scénarios impliquant SQL Azure, accédez à l'adresse suivante https://go.microsoft.com/fwlink/?LinkId=180745.

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

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 for ADO.NET.

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.

En plus d'utiliser le modèle Cache de base de données locale, 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.

Notes

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

Notes

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 des données mises à jour à partir de la base de données locale.

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

Concepts

SQL Server Compact 3.5 et Visual Studio

Autres ressources

Accès aux données dans Visual Studio