Nouveautés dans Sync Framework 2.0
Sync Framework 2.0 offre des fonctionnalités nouvelles et améliorées dans les domaines suivants :
Fournisseurs de bases de données
Nouveaux fournisseurs pour SQL Server et SQL Server Compact
Traitement par lot basé sur la mémoire fiable
API d'approvisionnement et de gestion
Initialisation de l'instantané
Flexibilité concernant la forme de la topologie
Améliorations des performances
Fournisseur de synchronisation de fichiers
- Conversion de données
Fournisseurs personnalisés
Fournisseurs simples
Conversion de données entre des fournisseurs
Filtrage
Gestion des conflits
Suivi
Service d'application de modifications
Sérialiseur du service de stockage des métadonnées
Convertisseurs de fournisseurs
Améliorations de connaissance
Niveaux de compatibilité
Interfaces obsolètes
Fournisseurs de bases de données
Sync Framework 2.0 présente deux nouveaux fournisseurs de bases de données, plusieurs fonctionnalités importantes liées à la synchronisation et à la gestion, ainsi que des améliorations de performances significatives.
Nouveaux fournisseurs pour SQL Server et SQL Server Compact
Sync Framework 2.0 inclut deux nouveaux fournisseurs de bases de données :
SqlCeSyncProvider est utilisé pour synchroniser des bases de données SQL Server Compact.
Ce fournisseur peut être utilisé pour synchroniser avec un serveur central mais peut aussi synchroniser avec d'autres clients, ce qui n'est pas possible avec SqlCeClientSyncProvider. Cette capacité permet aux développeurs de cibler de nouveaux scénarios, notamment un scénario de collaboration dans lequel, en l'absence d'une connexion à un serveur central, les personnes d'une équipe ont besoin de se synchroniser.
SqlSyncProvider est utilisé pour synchroniser toute autre édition de SQL Server, notamment SQL Server Express.
Ce fournisseur, qui peut être utilisé comme un serveur ou un client, réduit considérablement les obstacles à la synchronisation d'une base de données SQL Server. SqlSyncProvider offre les mêmes capacités que DbSyncProvider, mais il requiert nettement moins de code et de compréhension des requêtes que Sync Framework utilise pour synchroniser les données. DbSyncProvider est encore approprié dans le cas des bases de données non-SQL Server.
Comme tous les fournisseurs Sync Framework, ces nouveaux fournisseurs peuvent être utilisés dans toutes les formes de topologies : client-serveur, d'égal à égal, etc. Pour plus d'informations sur ces deux fournisseurs, consultez Procédure : configurer et exécuter la synchronisation collaborative (SQL Server).
Traitement par lot basé sur la mémoire fiable
Les versions précédentes de Sync Framework et Sync Services for ADO.NET ont offert un moyen aux développeurs de définir leur propre logique de traitement par lot, appelée ensuite par l'exécution de Sync Framework. Cette approche présentait les problèmes suivants : la complexité inhérente associée à la division des modifications en lots ; des boucles réseau excessives entre le client et le serveur ; et l'incapacité à résoudre les conflits de ressources parce que les lots étaient basés sur le nombre de lignes synchronisé, plutôt que sur la quantité de mémoire consommée par chaque lot.
Sync Framework 2.0 offre des solutions à tous ces problèmes en fournissant une API de traitement par lot plus complète et fiable. Les développeurs ne doivent plus écrire la logique de traitement par lot eux-mêmes parce que Sync Framework Runtime divise les modifications en lots selon plusieurs propriétés dans l'API. Les lots sont maintenant définis par la consommation de mémoire plutôt que par le nombre de lignes synchronisées, ce qui a éliminé les problèmes d'insuffisance de mémoire pour la plupart des scénarios courants. Pour plus d'informations, consultez Procédure : remettre des modifications dans des lots (SQL Server).
API d'approvisionnement et de gestion
Les activités d'approvisionnement et d'initialisation précédemment exposées uniquement via les outils Visual Studio ont maintenant été ajoutées aux API de fournisseur de bases de données. Cela inclut la capacité de configurer une base de données existante en ajoutant les tables de suivi des modifications et les déclencheurs requis par Sync Framework. Cela comprend aussi la capacité de démarrer avec une base de données vide, de créer le schéma utilisateur et de configurer ce schéma selon d'autres serveur ou base de données client qui ont déjà été configurés. Pour plus d'informations, consultez Procédure : configurer et exécuter la synchronisation collaborative (SQL Server).
Les tâches courantes telles que la sauvegarde et la restauration de la base de données ainsi que le nettoyage des métadonnées peuvent maintenant être accomplis directement via l'API, les développeurs n'ayant plus besoin d'implémenter cette logique eux-mêmes. Pour plus d'informations, consultez Procédure : sauvegarder et restaurer une base de données (SQL Server) et Procédure : nettoyer les métadonnées pour la synchronisation collaborative (SQL Server).
Initialisation de l'instantané
Avant qu'une base de données client SQL Server Compact puisse commencer à recevoir des modifications d'une autre base de données, la base de données client doit contenir des données de schéma de table et des données initiales, ainsi que l'infrastructure de suivi des modifications dont Sync Framework a besoin. Sync Framework offre deux moyens d'initialiser la base de données :
Initialisation complète de la base de données client
L'initialisation complète est appropriée dans certains cas, mais elle n'est pas idéale dans le cas de scénarios incluant des ressources limitées sur le client. La création du schéma de la base de données de toutes pièces et le chargement de toutes les données sur une connexion réseau lente peut entraîner de longues durées de synchronisation initiale et des erreurs de mémoire insuffisante.
Initialisation de l'instantané de la base de données client en utilisant une base de données client préexistante
Introduite dans Sync Framework 2.0, l'initialisation de l'instantané est conçue pour réduire la durée d'initialisation d'une base de données client. Lorsqu'une base de données client a été initialisée à l'aide d'une initialisation complète, les bases de données suivantes peuvent être initialisées à l'aide d'un instantané de cette première base de données client. Un instantané est une base de données SQL Server Compact spécialement préparée qui contient le schéma de table, des données (facultatif) et l'infrastructure de suivi des modifications. L'initialisation de l'instantané peut considérablement améliorer les durées de synchronisation initiale et réduire les conflits de mémoire. Pour plus d'informations, consultez « Approvisionnement des clients » dans Procédure : configurer et exécuter la synchronisation collaborative (SQL Server).
Flexibilité concernant la forme de la topologie
Les versions précédentes de Sync Services for ADO.NET étaient liées à une forme spécifique de topologie dans laquelle de nombreux clients synchronisaient les modifications via un serveur central.
Étant donné que Sync Services for ADO.NET est maintenant construit sur Sync Framework, les développeurs peuvent cibler une gamme beaucoup plus large de scénarios. Par exemple, les développeurs peuvent prendre en charge des scénarios de collaboration qui requièrent la capacité de synchroniser des modifications entre des clients. De plus, les développeurs peuvent cibler un scénario de filiale dans lequel une série de terminaux de point de vente (PDV) sont synchronisés avec un serveur de filiale qui, à son tour, est synchronisé avec un serveur d'entreprise central.
Étant donné que les nouveaux fournisseurs de bases de données sont construits sur Sync Framework, l'étape est définie pour prendre en charge la synchronisation des modifications avec les nouveaux types de magasins tels qu'Azure SQL Data Services.
Améliorations des performances
Dans cette version, les nouveaux fournisseurs de bases de données ont été méthodiquement testés dans des scénarios à grande échelle dans lesquels un serveur unique prend en charge des milliers de clients avec des centaines d'opérations de synchronisation simultanées. Ce test a entraîné un grand nombre d'améliorations des performances internes permettant aux fournisseurs de bases de données Sync Framework de s'exécuter aussi bien que d'autres technologies Microsoft, telles que le service RDA (Remote Data Access), tout en offrant une large gamme de fonctions qui rivalisent avec des solutions de bout en bout comme la réplication de fusion.
Fournisseur de synchronisation de fichiers
En plus des API de conversion de données qui peuvent être utilisées pour n'importe quel type de fournisseur personnalisé, Sync Framework 2.0 inclut des API de conversion spécialement conçues pour le fournisseur de synchronisation de fichiers. Pour plus d'informations, consultez Synchronisation du fournisseur de synchronisation de fichiers avec d'autres fournisseurs, IFileDataRetriever (pour le code managé) et IFileDataRetriever (pour le code non managé).
Fournisseurs personnalisés
Sync Framework 2.0 améliore de manière significative les fonctions de fournisseurs personnalisés standard et présente un nouveau type de fournisseur personnalisé : le fournisseur simple.
Fournisseurs simples
L'API de fournisseur simple facilite le travail lié au développement de fournisseurs, en particulier lorsque la source de données comporte très peu de fonctions de synchronisation, telles que le suivi des modifications. Cette API permet à un développeur d'écrire un fournisseur sans avoir besoin d'être un expert de la synchronisation. La majorité du code d'un fournisseur simple est le même que le code qui est requis pour interagir avec la source de données. Pour plus d'informations, consultez Implémentation d'un fournisseur personnalisé simple et Principes de base des fournisseurs personnalisés.
Principaux nouveaux types pour le code managé
Pour obtenir la liste complète des types, consultez Microsoft.Synchronization.SimpleProviders.
Principales nouvelles interfaces pour le code non managé
Pour obtenir la liste complète des types, consultez Composants de fournisseurs simples de Sync Framework.
Conversion de données entre des fournisseurs
Dans certains scénarios, les fournisseurs de synchronisation synchronisent le même type de données (par exemple, les données de vente), mais les formats de données requis par chaque fournisseur peuvent être différents. Pour répondre aux besoins de ce scénario, Sync Framework vous permet d'implémenter des interfaces qui convertissent les données au format requis par chaque fournisseur. Pour plus d'informations, consultez Conversion de données entre des fournisseurs.
Nouveaux types et propriétés pour le code managé
Nouvelles interfaces pour le code non managé
Filtrage
Les filtres servent à contrôler les données synchronisées. Sync Framework 2.0 prend en charge les filtres qui contrôlent les unités de modification à inclure dans la synchronisation, ainsi que les filtres personnalisés écrits par le développeur. Sync Framework 2.0 permet également aux fournisseurs de négocier les filtres qui sont utilisés pendant la synchronisation.
Pour plus d'informations, consultez Filtrage des données de synchronisation.
Filtrage des unités de modification
Une unité de modification fait partie d'un élément synchronisé, tel qu'un numéro de téléphone dans un élément de contact. Le même élément peut être représenté différemment selon les réplicas, certains réplicas offrant une représentation plus riche et plus complète que d'autres. Par exemple, une communauté de synchronisation échange des informations de contact et définit des unités de modification pour name, phone number et address. Un réplica de la communauté est un appareil mobile qui peut stocker uniquement name et phone number. Sync Framework répond aux besoins de ce scénario en permettant à un fournisseur de spécifier un filtre d'unité de modification, qui indique qu'un réplica ne peut stocker qu'un sous-ensemble des données. Les métadonnées de synchronisation et le processus de synchronisation ont tous les deux été améliorés pour gérer ce filtrage efficacement.
Nouveaux types pour le code managé
Nouvelles interfaces et méthodes pour le code non managé
Filtres personnalisés
Les filtres personnalisés sont écrits par le développeur et peuvent prendre n'importe quelle forme. Un réplica filtré ne stocke que les données des éléments qui se trouvent dans le filtre, par exemple, un réplica de stockage multimédia qui stocke uniquement des chansons classées trois étoiles ou plus. Étant donné que le classement des chansons évolue, un élément peut être inclus dans le filtre, ou en être exclu. Un développeur peut définir un filtre personnalisé qui contrôle les données d'élément stockées dans un réplica filtré. Un réplica de suivi de filtre est un autre type de réplica de la communauté qui permet d'identifier les éléments contenus dans le filtre et ceux qui ont été récemment inclus ou exclus. Ce réplica peut stocker les données des éléments qui ne se trouvent pas dans le filtre. Sync Framework synchronise de manière appropriée le réplica de suivi de filtre avec le réplica filtré en envoyant à ce dernier uniquement les éléments contenus dans le filtre et les informations propres au filtre. Sync Framework calcule également correctement la connaissance et d'autres métadonnées liées au réplica de suivi de filtre lorsque des modifications sont envoyées au réplica de suivi de filtre par le réplica filtré.
N'oubliez pas que les filtres personnalisés ne peuvent pas être utilisés par des fournisseurs simples, par des fournisseurs qui signalent des conflits de contraintes ou des fournisseurs qui utilisent le service d'application de modifications, sinon des résultats inattendus peuvent se produire.
Principaux nouveaux types pour le code managé
Le fournisseur implémente les types suivants :
Sync Framework implémente les types suivants :
Pour obtenir la liste complète des types, consultez Microsoft.Synchronization.
Principales nouvelles interfaces pour le code non managé
Le fournisseur implémente les interfaces suivantes :
Sync Framework implémente les interfaces suivantes :
Pour obtenir une liste complète des interfaces, consultez Composants principaux de Sync Framework.
Filtres négociés par le fournisseur
Lorsqu'une source de données de destination ne stocke qu'un sous-ensemble des données disponibles, il est plus efficace que le fournisseur de source utilise un filtre pour énumérer uniquement les données qui peuvent être stockées par la destination. La négociation des filtres permet à un fournisseur de destination de spécifier que le fournisseur de source doit utiliser un ou plusieurs filtres pendant l'énumération des modifications ; le fournisseur de source peut accepter ou rejeter un filtre. Si un fournisseur de source ne prend en charge aucun des filtres demandés, le fournisseur de destination peut choisir de recevoir toutes les données et procéder lui-même au filtrage. Sync Framework appelle les fournisseurs en conséquence pour négocier l'utilisation des filtres.
Nouveaux types pour le code managé
Nouvelles interfaces pour le code non managé
Gestion des conflits
Sync Framework 2.0 améliore la prise en charge des conflits de contraintes enregistrés et celle de l'implémentation de la résolution de conflit de type « le dernier enregistreur gagne ».
Conflits de contraintes
Sync Framework 2.0 améliore la prise en charge des conflits de contraintes. Ce sont des conflits qui ne respectent pas les contraintes mises sur les éléments ou unités de modification, par exemple la relation de dossiers ou l'emplacement de données portant le même nom dans un système de fichiers. Un fournisseur de destination peut signaler un conflit de contraintes à Sync Framework, puis utiliser des composants de Sync Framework pour résoudre le conflit et déterminer comment appliquer la résolution au réplica de destination.
Gardez à l'esprit que les conflits de contraintes ne peuvent pas être utilisés par des fournisseurs qui utilisent des filtres personnalisés ou le service d'application des modifications, sinon des résultats inattendus peuvent se produire.
Pour plus d'informations, consultez Détection et résolution des conflits de contraintes.
Principaux types nouveaux et mis à jour pour le code managé
Les fournisseurs de destination implémentent la nouvelle classe suivante :
Les applications de synchronisation implémentent de nouvelles méthodes dans la classe suivante :
Sync Framework implémente de nouveaux membres dans les classes suivantes :
Pour obtenir la liste complète des types, consultez Microsoft.Synchronization.
Principales nouvelles interfaces pour le code non managé
Les fournisseurs de destination implémentent la nouvelle interface suivante :
Les applications de synchronisation implémentent la nouvelle interface suivante :
Sync Framework implémente les nouvelles interfaces suivantes :
Pour obtenir une liste complète des interfaces, consultez Composants principaux de Sync Framework.
Journalisation des conflits
Il peut être utile d'enregistrer des conflits dans un journal pour en permettre le traitement indépendamment de la session de synchronisation, de façon, par exemple, à ce qu'un utilisateur puisse passer les conflits en revue et décider de la manière de les résoudre. Sync Framework 2.0 définit un jeu d'interfaces du journal des conflits et fournit des composants qui aident à gérer des conflits dans le journal. Sync Framework fournit également une implémentation des interfaces du journal des conflits pour les réplicas qui ne contiennent pas de journal des conflits. Cette implémentation fonctionne en mémoire et permet de stocker les conflits temporaires pouvant résulter de la gestion de conflits de contraintes. Pour plus d'informations, consultez Journalisation et gestion des conflits.
Nouveaux types pour le code managé
Les fournisseurs implémentent les nouvelles classes suivantes :
Sync Framework implémente les nouvelles classes suivantes :
Nouvelles interfaces pour le code non managé
Les fournisseurs implémentent les nouvelles classes suivantes :
Sync Framework implémente les nouvelles classes suivantes :
Résolution de conflit de type « le dernier enregistreur gagne »
Une application peut avoir besoin de résoudre les conflits d'accès concurrentiel (où un élément est mis à jour par plusieurs réplicas) en conservant la modification la plus récente, indépendamment de la modification effectuée. Sync Framework 2.0 prend en charge cette résolution en fournissant un mécanisme spécifique qui permet à une application de récupérer l'heure à laquelle une modification a été apportée au réplica source et l'heure à laquelle une modification a été apportée au réplica de destination. L'application peut ensuite comparer les deux heures et déterminer l'action de résolution de conflit qui applique la dernière modification.
Pour plus d'informations, consultez Détection et résolution des conflits d'accès concurrentiel.
Nouveaux types pour le code managé
Les fournisseurs implémentent la nouvelle interface suivante :
Nouvelles interfaces pour le code non managé
Les fournisseurs implémentent la nouvelle interface suivante :
Suivi
Sync Framework vous permet d'effectuer le suivi de l'exécution de plusieurs composants, ce qui s'avère utile pendant le débogage d'applications. Pour la plupart des composants Sync Framework, le suivi est effectué au niveau du code natif à l'aide de l'infrastructure de suivi d'événements pour Windows. Même si vous développez avec la version managée d'une API, vous utilisez toujours l'infrastructure de suivi d'événements pour Windows, car l'API managée est un wrapper fin sur l'API native. Pour plus d'informations, consultez Suivi des composants Sync Framework.
Les fournisseurs de bases de données Sync Framework proposent un suivi managé basé sur l'implémentation de .NET Framework. Pour plus d'informations, consultez Procédure : tracer le processus de synchronisation.
Service d'application de modifications
Sync Framework inclut une implémentation d'applicateur de modifications que la plupart des applications utilisent pour appliquer des modifications à un réplica. Sync Framework 2.0 présente le service d'application de modifications, qui effectue les mêmes actions que l'applicateur de modifications, mais d'une façon plus précise. Un fournisseur de destination qui requiert plus de flexibilité que l'applicateur de modifications standard peut utiliser le service d'application de modifications pour effectuer uniquement le jeu d'actions concerné.
N'oubliez pas que le service d'application des modifications ne peut pas être utilisé par des fournisseurs qui signalent des conflits de contraintes ou utilisent des filtres personnalisés, sinon des résultats inattendus peuvent se produire.
Pour plus d'informations, consultez Application des modifications à l'aide du service d'application des modifications.
Nouveaux types pour le code managé
Nouvelles interfaces et énumération pour le code non managé
Sérialiseur du service de stockage des métadonnées
Le service de stockage des métadonnées stocke les métadonnées de réplica et d'élément dans une base de données légère. Les métadonnées sont stockées dans un schéma de table et un format binaire spécifiques qui peuvent changer avec la publication de nouvelles versions de Sync Framework. En outre, les champs de fournisseur personnalisé dans la base de données peuvent changer dans le cas où un développeur publie de nouvelles versions d'un fournisseur particulier. Pour améliorer l'interopérabilité entre des versions différentes, Sync Framework fournit un format de fichier canonique et un jeu d'interfaces de sérialisation, qui assurent une compatibilité descendante ou ascendante à travers une plage raisonnable de modifications de métadonnées entre les versions. Pour plus d'informations, consultez Accès aux métadonnées à partir de composants de versions différentes et Mise à niveau de la version de magasin des métadonnées.
Nouveaux types pour le code managé
Nouvelles interfaces pour le code non managé
Convertisseurs de fournisseurs
Les fournisseurs personnalisés dérivent généralement d'IKnowledgeSyncProvider, mais ils peuvent aussi dériver directement d'ISyncProvider. Toutefois, lorsqu'un objet ISyncSession est utilisé pour gérer la synchronisation (ce qui est généralement le cas), le fournisseur doit dériver d'IKnowledgeSyncProvider. Pour inclure un fournisseur dérivé d'ISyncProvider dans une session de synchronisation, Sync Framework vous permet de convertir le fournisseur en un IKnowledgeSyncProvider au moment de l'exécution.
Nouvelles interfaces et méthodes pour le code non managé
Améliorations de connaissance
Sync Framework 2.0 améliore l'objet de connaissance pour offrir plus de flexibilité et d'efficacité.
Structure de connaissance
Sync Framework 2.0 modifie la structure sous-jacente d'un objet de connaissance en un format plus flexible et efficace, et définit de nouvelles interfaces pour accéder aux nouveaux éléments de connaissance. Pour assurer la compatibilité descendante, les nouveaux objets de connaissance émulent également la sortie des méthodes de connaissance de Sync Framework 1.0.
Types nouveaux et mis à jour pour le code managé
Nouvelles interfaces et énumération pour le code non managé
Cookies de connaissance
Sync Framework 2.0 ajoute des cookies de connaissance, qui sont des représentations légères en lecture seule de la connaissance qui peut être utilisée pour les comparaisons rapides lorsque les performances sont particulièrement importantes.
Nouveaux types et membres pour le code managé
Nouvelles énumération et méthodes pour le code non managé
Niveaux de compatibilité
Sync Framework inclut des niveaux de compatibilité pour les métadonnées afin que les composants de versions différentes puissent continuer à interagir correctement. Pour plus d'informations, consultez Compatibilité descendante et interopérabilité de Sync Framework.
Nouveaux types et membres pour le code managé
Propriété CompatibilityLevel de ChangeBatchBase et classes dérivées.
Propriété CompatibilityLevel de SyncKnowledge et classes dérivées.
Nouvelles énumération et méthodes pour le code non managé
Interfaces obsolètes
Les interfaces suivantes sont obsolètes et ne doivent plus être développées. Elles continuent à fonctionner comme dans Sync Framework 2.0, mais elle peuvent être supprimées dans une version ultérieure.
Interfaces obsolètes pour le code non managé
Voir aussi
Concepts
Microsoft Sync Framework
Avantages liés à l'utilisation de Sync Framework
Sélection des composants de Sync Framework appropriés