Partager via


Accès aux métadonnées à partir de composants de versions différentes

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 la classe SyncMetadataStoreSerializer (pour le code managé) ou l'interface ISyncMetadataStoreSerializer (pour le code non managé), qui assurent une compatibilité descendante ou ascendante à travers une plage raisonnable de modifications de métadonnées entre les versions.

Sync Framework fournit également la prise en charge de la mise à niveau du magasin des métadonnées. Pour plus d'informations, consultez Mise à niveau de la version de magasin des métadonnées.

Utilisation du format canonique pour la compatibilité des versions

La possibilité de synchronisation des réplicas de participants partiels, tels que les périphériques, avec des versions différentes d'un fournisseur constitue l'un des principaux avantages du format canonique. Prenons l'exemple suivant :

  • Une application prend en charge la synchronisation entre un périphérique et plusieurs serveurs installés dans différents bureaux de la société. Les utilisateurs peuvent synchroniser un périphérique avec un serveur, apporter des modifications sur le périphérique, synchroniser le périphérique avec un serveur d'un autre bureau, et ainsi de suite.

  • Le fournisseur de contacts de la société a été publié dans trois versions différentes : 1.0, 2.0 et 2.5. La version 1.0 repose sur la version 1.0 de Sync Framework, et les deux autres versions sur la version 2.0 de Sync Framework. Ces trois versions sont encore disponibles et prises en charge sur le réseau d'entreprise.

Contrôle des versions de Sync Framework

Si l'application stocke des métadonnées dans un fichier binaire du service de stockage des métadonnées sur le périphérique, le schéma et le format des métadonnées peuvent être incompatibles avec le fournisseur avec lequel un utilisateur souhaite effectuer une synchronisation. Cette incompatibilité peut survenir parce que le fournisseur a une version différente et qu'il utilise un format de fichier de métadonnées différent ou parce que le fournisseur utilise une version différente de Sync Framework. Pour éviter ce problème, l'application peut utiliser à la place un fichier binaire sur chaque serveur, puis sérialiser et désérialiser les métadonnées entre ce fichier et un fichier canonique sur chaque périphérique. Le processus est le suivant :

  1. À la fin de la première session de synchronisation d'un périphérique, l'application sérialise les métadonnées dans un fichier canonique stocké sur le périphérique en appelant SerializeReplicaMetadata(SyncIdFormatGroup, SyncId, String, SyncSerializationVersion) (pour le code managé) ou ISyncMetadataStoreSerializer::SerializeReplicaMetadata (pour le code non managé).

  2. Lors de chaque session ultérieure, l'application effectue les actions suivantes :

    1. Elle appelle DeserializeReplicaMetadata (pour le code managé) ou ISyncMetadataStoreSerializer::DeserializeReplicaMetadata (pour le code non managé) pour désérialiser les métadonnées du fichier canonique et les appliquer dans le fichier binaire du serveur.

    2. Elle synchronise les modifications entre le périphérique et le serveur.

    3. Elle appelle SerializeReplicaMetadata(SyncIdFormatGroup, SyncId, String, SyncSerializationVersion) (pour le code managé) ou SerializeReplicaMetadata (pour le code non managé) pour sérialiser les métadonnées mises à jour et les réappliquer sur le périphérique.

Les processus de sérialisation et de désérialisation sont efficaces : pour la sérialisation, les requêtes qui sélectionnent des métadonnées du magasin du service de stockage des métadonnées sont indexées ; pour la désérialisation, seules les modifications incrémentielles apportées au fichier canonique sont désérialisées.

Contrôle des versions du fournisseur

Les méthodes de la classe SyncMetadataStoreSerializer (pour le code managé) et de l'interface ISyncMetadataStoreSerializer (pour le code non managé) prennent en charge le contrôle des versions du fournisseur en sérialisant la version du fournisseur dans les métadonnées et en vérifiant si la version du fournisseur attendue est utilisée lors de la synchronisation des métadonnées. Examinez les cas suivants :

  • Il existe trois versions d'un fournisseur (v1, v2 et v3).

  • Dans la version v2, une modification incompatible a été apportée au schéma personnalisé du fournisseur.

  • v2 et v3 sont compatibles.

Si vous sérialisez les métadonnées d'un fournisseur v3, vous pouvez spécifier la version de fournisseur v2 dans les métadonnées. Un fournisseur v2 ou v3 peut ensuite désérialiser les métadonnées en spécifiant la valeur v2 comme paramètre de version de compatibilité attendu pour le fournisseur. Le fournisseur v1 spécifie la valeur v1 et la désérialisation échouera par conception car les métadonnées sont incompatibles avec v1. En règle générale, utilisez la version la plus basse possible afin d'assurer le niveau de compatibilité le plus élevé avec d'autres versions du même fournisseur.

Lorsque vous publiez une nouvelle version d'un fournisseur qui met à niveau le schéma de métadonnées, vous devez vous assurer que les métadonnées restent compatibles avec les versions précédentes du fournisseur. Pour plus d'informations, consultez Mise à niveau de la version de magasin des métadonnées.

Voir aussi

Autres ressources

Service de stockage des métadonnées de Sync Framework