Partager via


Procédure : spécifier la synchronisation par instantané, par téléchargement, par téléchargement ascendant et bidirectionnelle

Sync Framework prend en charge la synchronisation par instantané, par téléchargement, par téléchargement ascendant et bidirectionnelle. En raison de la souplesse qu'offre Sync Framework, vous pouvez spécifier différents types de synchronisation pour différentes tables. Pour plus d'informations, consultez Architecture et classes pour la synchronisation client et serveur.

Cette rubrique présente les propriétés qui sont requises pour chaque type de synchronisation. Les rubriques de cette section décrivent comment configurer les types de synchronisation et fournissent des exemples de code.

Dans cette section

Propriétés qui déterminent la direction de la synchronisation

Le type de synchronisation utilisé pour une table dépend des commandes de synchronisation que vous définissez sur l'objet SyncAdapter et de la propriété SyncDirection sur l'objet SyncTable. Les commandes de synchronisation déterminent les données qui peuvent être synchronisées, et la propriété SyncDirection détermine les données qui sont réellement synchronisées pour une session spécifique. Bien souvent, il s'agit des mêmes données : par exemple, vous spécifiez la synchronisation bidirectionnelle et les commandes pour sa prise en charge. Toutefois, dans certains cas, vous souhaiterez peut-être synchroniser les données dans une seule direction. Par exemple, un vendeur pourra nécessiter un accès par téléchargement uniquement aux données de produit, alors qu'un responsable devra également être en mesure de mettre à jour ces données à distance. Les commandes SyncAdapter peuvent être spécifiées pour la synchronisation bidirectionnelle. Toutefois, la propriété SyncDirection est définie à téléchargement uniquement pour le vendeur.

Pour spécifier la direction de la synchronisation, définissez la propriété SyncDirection à l'une des valeurs suivantes de l'énumération SyncDirection :

Ensuite, pour chaque table, spécifiez manuellement un ensemble de commandes pour l'objet SyncAdapter, ou utilisez l'objet SqlSyncAdapterBuilder pour générer ces commandes. Dans le cas de la synchronisation par téléchargement uniquement et bidirectionnelle, le serveur doit également être configuré pour assurer le suivi des modifications de données incrémentielles. Pour plus d'informations, consultez Suivi des modifications dans la base de données serveur.

Si vous créez manuellement les commandes, vous définissez toutes propriétés suivantes, ou certaines d'entre elles, sur l'objet SyncAdapter :

  • SelectIncrementalInsertsCommand. Cette propriété est utilisée dans tous les types de synchronisation. La propriété spécifie la commande qui récupère du serveur de base de données les insertions initiales pour la synchronisation par instantané, par téléchargement uniquement et bidirectionnelle, ainsi que les insertions incrémentielles pour la synchronisation par téléchargement uniquement et bidirectionnelle. Par défaut, la commande extrait également le schéma de table de la base de données serveur pour tous les types de synchronisation. La création du schéma et les insertions sont appliquées au client par l'objet SqlCeClientSyncProvider.

  • SelectIncrementalUpdatesCommand et SelectIncrementalDeletesCommand. Ces propriétés sont utilisées pour la synchronisation par téléchargement uniquement et la synchronisation bidirectionnelle. Les propriétés spécifient les commandes qui extraient les mises à jour et les suppressions sur le serveur de sorte que ces mises à jour et suppressions puissent être appliquées au client par l'objet SqlCeClientSyncProvider.

  • InsertCommand, UpdateCommand et DeleteCommand. Ces propriétés sont utilisées pour la synchronisation par téléchargement ascendant uniquement et la synchronisation bidirectionnelle. Les propriétés spécifient les commandes qui appliquent au serveur les insertions, mises à jour et suppressions opérées sur le client.

  • SelectConflictUpdatedRowsCommand et SelectConflictDeletedRowsCommand. Ces propriétés sont généralement utilisées pour la synchronisation bidirectionnelle. Les propriétés spécifient les commandes qui extraient les conflits de mise à jour et de suppression sur le serveur. Pour plus d'informations, consultez Procédure : gérer les conflits de données et les erreurs.

La spécification manuelle des commandes de synchronisation présente un avantage : vous disposez d'un meilleur contrôle sur les commandes et les types de modifications qui sont téléchargés à partir du client. Par exemple, si vous voulez procéder à une synchronisation bidirectionnelle mais que vous ne voulez pas télécharger les suppressions du client, vous ne spécifiez aucune commande pour la propriété DeleteCommand. Pour obtenir un exemple des commandes manuelles qui sont plus complexes que celles générées par l'objet SqlSyncAdapterBuilder, consultez Procédure : gérer les conflits de données et les erreurs.

Si l'objet SqlSyncAdapterBuilder génère les commandes, définissez la propriété SyncDirection. Cette propriété détermine quelles commandes de l'objet SyncAdapter doivent être générées pour une table. Pour la synchronisation par instantané ou par téléchargement ascendant uniquement, vous n'avez aucune autre propriété à définir. Pour la synchronisation par téléchargement uniquement et bidirectionnelle, vous devez également définir les propriétés qui identifient les colonnes sur le serveur à utiliser pour le suivi des modifications, et vous devez spécifier si les données doivent être filtrées. Ces propriétés sont les suivantes :

En fonction des colonnes et des valeurs de filtre spécifiées pour ces propriétés, l'objet SqlSyncAdapterBuilder génère les commandes appropriées.

Modification de la direction de la synchronisation

Une fois qu'une table a été synchronisée, vous pouvez spécifier une direction de la synchronisation différente. Cependant, la synchronisation par instantané ne permet pas le suivi des modifications dans la base de données client. Si vous prévoyez qu'une application nécessitera un suivi des modifications des données à un certain stade, il est déconseillé de configurer la synchronisation par instantané. Si vous configurez la synchronisation par instantané puis optez pour un autre type de synchronisation, sachez que les problèmes suivants liés au suivi des modifications se produiront :

  • Si la synchronisation par instantané est configurée et que vous passez à la synchronisation par téléchargement uniquement ou bidirectionnelle :

    les lignes côté serveur pourront être sélectionnées, puis téléchargées de nouveau. Ceci peut provoquer des conflits lors de la phase de téléchargement.

  • Si la synchronisation par instantané est configurée et que vous apportez des modifications à la base de données client, puis passez à la synchronisation par téléchargement ascendant uniquement ou bidirectionnelle :

    les modifications effectuées dans la base de données client ne seront pas téléchargées. S'il est nécessaire que les modifications soient téléchargées, vous devez effectuer un exemple de mise à jour de chaque ligne modifiée.

  • Si la synchronisation par instantané est configurée et que vous passez à la synchronisation par téléchargement ascendant uniquement ou bidirectionnelle, puis apportez des modifications à la base de données client :

    des conflits pourront survenir durant la phase de téléchargement ascendant.

Voir aussi

Concepts

Programmation des tâches courantes de synchronisation client et serveur
Outils permettant de développer des applications