Composants principaux de Sync Framework
Les composants principaux de Sync Framework peuvent être utilisés à partir d'un langage non managé pour effectuer la synchronisation. Ces composants peuvent être utilisés pour gérer les métadonnées et créer des fournisseurs de synchronisation et des applications.
Structures, énumérations et indicateurs
Le tableau suivant liste les structures, énumérations et indicateurs définis par Sync Framework, ainsi que les fonctionnalités auxquelles chaque composant est généralement associé.
Composant | Fonctionnalité associée |
---|---|
Métadonnées |
|
Métadonnées |
|
Filtrage |
|
Métadonnées |
|
Métadonnées |
|
Métadonnées |
|
Session |
|
Métadonnées |
|
Service d'application de modifications |
|
Conflits de contraintes |
|
Conflits d'accès concurrenciel |
|
Conflits de contraintes |
|
Filtrage |
|
Filtrage |
|
Métadonnées |
|
Conflits de contraintes |
|
Synchronisation de récupération |
|
Rappel d'application |
|
Rappel d'application |
|
Conflits d'accès concurrenciel |
|
Application des modifications |
|
Contrôle de version |
|
Métadonnées |
|
Métadonnées |
|
Filtrage |
|
Métadonnées |
Interfaces implémentées par Sync Framework
Les interfaces suivantes sont implémentées par Sync Framework.
Interfaces de fabrique
Les interfaces suivantes sont principalement utilisées pour la création d'autres composants Sync Framework. Chacune de ces interfaces peut être créée en passant CLSID_SyncServices et l'IID spécifié à CoCreateInstance.
Interface | IID |
---|---|
IID_IApplicationSyncServices |
|
IID_IClockVectorServices |
|
IID_IProviderCustomFilteredSyncServices |
|
IID_IProviderFilteredSyncServices |
|
IID_IProviderFilteredSyncServices2 |
|
IID_IProviderSyncServices |
|
IID_IProviderSyncServices2 |
Interfaces de lot de modifications
Les interfaces suivantes représentent un lot de modifications. Chaque interface peut être obtenue en passant l'IID spécifié à la méthode QueryInterface de toute autre interface. Certaines interfaces sont implémentées uniquement lorsque les conditions spécifiées sont rencontrées.
Interface | IID | Condition |
---|---|---|
IID_ISyncChangeBatch |
Le lot de modifications ne peut pas faire partie d'une synchronisation de récupération. |
|
IID_ISyncChangeBatch2 |
Toujours. |
|
IID_ISyncChangeBatchAdvanced |
Toujours. |
|
IID_ISyncChangeBatchBase |
Toujours. |
|
IID_ISyncChangeBatchBase2 |
Toujours. |
|
IID_ISyncChangeBatchWithFilterKeyMap |
Toujours. |
|
IID_ISyncChangeBatchWithPrerequisite |
Toujours. |
|
IID_ISyncFullEnumerationChangeBatch |
Le lot de modifications doit faire partie d'une synchronisation de récupération. |
|
IID_ISyncFullEnumerationChangeBatch2 |
Le lot de modifications doit faire partie d'une synchronisation de récupération. |
Les interfaces suivantes représentent une modification unique. Chaque interface peut être obtenue en passant l'IID spécifié à la méthode QueryInterface de toute autre interface.
Interface | IID |
---|---|
IID_ISyncChange |
|
IID_ISyncChangeWithFilterKeyMap |
|
IID_ISyncChangeWithPrerequisite |
|
IID_ISyncFullEnumerationChange |
|
IID_ISyncMergeTombstoneChange |
Les interfaces suivantes sont utilisées pour ajouter des informations supplémentaires à un objet ISyncChange. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En passant IID_IFilterTrackingSyncChangeBuilder à la méthode QueryInterface d'un objet ISyncChangeBuilder. |
|
Retournée par différentes méthodes, telles qu'ISyncChangeBatchBase::AddItemMetadataToGroup. |
Les interfaces suivantes sont utilisées pour gérer des unités de modification. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En appelant IEnumSyncChangeUnits::Next. |
|
En appelant une méthode telle qu'ISyncChange::GetChangeUnits. |
Les interfaces suivantes sont utilisées pour générer ou énumérer une liste de modifications. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En appelant IProviderSyncServices::CreateDestinationChangeVersionsBuilder. |
|
En passant IID_IDestinationChangeVersionsBuilder2 à la méthode QueryInterface d'un objet IDestinationChangeVersionsBuilder. |
|
En appelant ISyncChangeBatchBase::GetChangeEnumerator ou IDestinationChangeVersionsBuilder::GetChangeEnumerator. |
|
En passant IID_IFilterTrackingSyncChangeBuilder à la méthode QueryInterface d'un objet IDestinationChangeVersionsBuilder. |
Interfaces d'applicateur de modifications
Les interfaces suivantes peuvent être utilisées par le fournisseur de destination afin d'aider à gérer les conflits et à appliquer des modifications.
N'importe quelle interface du tableau suivant peut être obtenue en passant l'IID spécifié à la méthode IProviderSyncServices::CreateChangeApplier ou à la méthode QueryInterface de n'importe quelle autre interface du tableau.
Interface | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier2 |
L'applicateur de modifications enregistre l'interface suivante avec le fournisseur de destination en appelant IAsynchronousNotifyingChangeApplierTarget::RegisterCallback.
Interface | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTargetCallback |
Les interfaces suivantes sont utilisées pour communiquer entre l'applicateur de modifications et un fournisseur lors de la détection de conflit et l'application des modifications. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
Passée à des méthodes telles qu'ISynchronousDataRetriever::LoadChangeData. |
|
En passant IID_IFilterTrackingSaveChangeContext à la méthode QueryInterface d'un objet ISaveChangeContext ou ISaveChangeWithChangeUnitsContext. |
|
En appelant IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange ou IRecoverableError::GetRecoverableErrorDataForChangeUnit. |
|
Passée à ISynchronousNotifyingChangeApplierTarget::SaveChange et IAsynchronousNotifyingChangeApplierTarget::SaveChange. |
|
En passant IID_ISaveChangeContext2 à la méthode QueryInterface d'un objet ISaveChangeContext. |
|
Passée à ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits et IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits. |
|
En passant IID_ISaveChangeWithChangeUnitsContext2 à la méthode QueryInterface d'un objet ISaveChangeWithChangeUnitsContext. |
|
Les interfaces suivantes peuvent être utilisées à la place d'un applicateur de modifications standard lorsqu'une plus grande souplesse est nécessaire. Chaque interface est obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En appelant IChangeApplicationServices::GetChangeApplicationContext. |
|
En passant IID_IChangeApplicationServices à IProviderSyncServices::CreateChangeApplier. |
Journalisation des conflits
Les interfaces suivantes sont utilisées pour enregistrer les conflits dans un fichier journal. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
Peut être implémentée par un fournisseur ou peut être obtenue en passant IID_IConflictLogAccess à la méthode QueryInterface d'un objet IMemoryConflictLog. |
|
Peut être implémentée par un fournisseur ou peut être obtenue en passant IID_IConflictLogWriter à la méthode QueryInterface d'un objet IMemoryConflictLog. |
|
En appelant IEnumLoggedConflictsBuilder::GetChangeEnumerator. |
|
En appelant IProviderSyncServices2::CreateLoggedConflictsEnumBuilder. |
|
En appelant IProviderSyncServices2::CreateLoggedConflict. |
|
En appelant IProviderSyncServices2::CreateMemoryConflictLog. |
Filtrage
Les interfaces suivantes représentent les informations relatives aux filtres utilisés pour contrôler les données incluses dans l'étendue de la synchronisation. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En passant l'indicateur SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST à IProviderFilteredSyncServices::CreateFilterInfo, puis en passant IID_IChangeUnitListFilterInfo à la méthode QueryInterface de l'objet ISyncFilterInfo retourné. |
|
En appelant IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo. |
|
En appelant IProviderCustomFilteredSyncServices::CreateCustomFilterInfo. |
|
En appelant IProviderCustomFilteredSyncServices::CreateFilterKeyMap ou ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap. |
|
Passée à IRequestFilteredSync::SpecifyFilter. |
|
Méthodes d'appel telles qu'IProviderFilteredSyncServices::CreateFilterInfo. |
|
En passant IID_ISyncFilterInfo2 à la méthode QueryInterface d'un objet ISyncFilterInfo. |
Métadonnées de connaissance
Les interfaces suivantes représentent un objet de connaissance. N'importe quelle interface du tableau suivant peut être obtenue en passant l'IID spécifié à la méthode QueryInterface de n'importe quelle autre interface du tableau. Sachez que certaines méthodes de certaines interfaces échouent lorsque la version minimale prise en charge de l'objet de connaissance n'a pas la valeur attendue ; par exemple ISyncKnowledge::GetSingleItemExceptions échouera si la version minimale prise en charge n'est pas SYNC_SERIALIZATION_VERSION_V1. En outre, certaines méthodes modifient la version minimale prise en charge ; par exemple IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker définira la version minimale prise en charge sur SYNC_SERIALIZATION_VERSION_V3. Pour plus d'informations sur la version minimale prise en charge requise ou définie, consultez la documentation de référence pour chaque méthode.
Interface | IID |
---|---|
IID_ISyncKnowledge |
|
IID_ISyncKnowledge2 |
|
IID_IKnowledgeWithMarkers |
|
IID_IForgottenKnowledge |
Les interfaces suivantes représentent les composants d'un objet de connaissance dont la version minimale prise en charge est SYNC_SERIALIZATION_VERSION_V1. La version minimale prise en charge d'un objet de connaissance peut être obtenue en appelant ISyncKnowledge2::GetMinimumSupportedVersion. Chaque interface peut être obtenue en appelant la méthode spécifiée.
Interface | Obtenue en appelant |
---|---|
Les interfaces suivantes représentent les composants de toutes les versions d'un objet de connaissance. Chaque interface peut être obtenue en appelant la méthode spécifiée.
Interface | Obtenue en appelant |
---|---|
ISyncKnowledge::FindClockVectorForItem ou ISyncKnowledge::FindClockVectorForChangeUnit |
|
IProviderSyncServices::CreateReplicaKeyMap ou ISyncKnowledge::GetReplicaKeyMap. |
Les interfaces suivantes sont utilisées pour inspecter ou générer un objet de connaissance. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En passant IID_IConstructReplicaKeyMap à la méthode QueryInterface d'un objet IReplicaKeyMap. |
|
En passant d'IID_ICoreFragmentInspector à ISyncKnowledge2::GetInspector. |
|
En appelant IClockVectorServices::CreateKnowledgeBuilder. |
|
En passant IID_IKnowledgeBuilder2 à la méthode QueryInterface d'un objet IKnowledgeBuilder. |
Interfaces de session
Les interfaces suivantes sont utilisées par une application de synchronisation pour démarrer une session de synchronisation et récupérer des informations sur la session. Chaque interface peut être obtenue à l'aide du mécanisme spécifié.
Interface | Mode d'obtention |
---|---|
En appelant IApplicationSyncServices::CreateSyncSession. |
|
En passant IID_ISyncSessionExtendedErrorInfo à la méthode QueryInterface d'un objet ISyncSession. |
|
En appelant IProviderSyncServices2::CreateSyncSessionState. Également passé par Sync Framework à IKnowledgeSyncProvider::BeginSession et IKnowledgeSyncProvider::EndSession. |
|
En passant IID_ISyncSessionState2 à la méthode QueryInterface d'un objet ISyncSessionState. |
|
En passant IID_ISyncDataConversionControl à la méthode QueryInterface d'un objet ISyncSessionState. |
Interfaces des données de rappel d'application
Les interfaces suivantes sont passées par Sync Framework à une application de synchronisation à l'aide de la méthode de rappel spécifiée.
Interface | Méthode de rappel |
---|---|
Autres interfaces
L'interface suivante est utilisée pour enregistrer un convertisseur de fournisseur. Elle peut être obtenue en appelant la méthode spécifiée.
Interface | Obtenue en appelant |
---|---|
Implémentée par les fournisseurs de synchronisation
Les interfaces suivantes sont implémentées par les fournisseurs de synchronisation.
Interfaces de fournisseur
Chacune des interfaces suivantes doit être retournée par la méthode QueryInterface de l'objet ISyncProvider lorsqu'il reçoit l'IID spécifié. Ces interfaces sont passées par l'application de synchronisation à l'objet de session de synchronisation à l'aide d'IApplicationSyncServices::CreateSyncSession.
Interface | IID |
---|---|
IID_IKnowledgeSyncProvider |
|
IID_ISyncProvider |
|
IID_IFilterTrackingProvider |
|
IID_IRequestFilteredSync |
|
IID_ISupportFilteredSync |
Interfaces des cibles d'applicateur de modifications
Les interfaces suivantes sont implémentées par un fournisseur de destination qui utilise un applicateur de modifications synchrone. Chaque interface implémentée doit être retournée par la méthode QueryInterface de l'objet ISynchronousNotifyingChangeApplierTarget lorsqu'il reçoit l'IID spécifié. Ces interfaces sont passées au composant applicateur de modifications à l'aide d'une méthode telle qu'ISynchronousNotifyingChangeApplier::ApplyChanges.
Interface | IID |
---|---|
IID_ISynchronousNotifyingChangeApplierTarget |
|
IID_ISynchronousNotifyingChangeApplierTarget2 |
|
IID_IFilteredReplicaNotifyingChangeApplierTarget |
|
IID_IFilterTrackingNotifyingChangeApplierTarget |
L'interface suivante est implémentée par un fournisseur de destination qui utilise un applicateur de modifications asynchrone. Cette interface est passée au composant applicateur de modifications à l'aide d'une méthode telle qu'IAsynchronousNotifyingChangeApplier::ApplyChanges.
Interface | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTarget |
Interfaces d'extracteur de données
Les interfaces suivantes sont implémentées par un fournisseur de destination qui utilise un applicateur de modifications. Ces interfaces sont passées au composant applicateur de modifications à l'aide d'une méthode spécifiée.
Interface | Méthode |
---|---|
Autres interfaces de fournisseur
Les interfaces suivantes sont implémentées par un fournisseur pour tirer parti de différentes fonctionnalités, telles que le filtrage ou la conversion de données. L'interface est passée à Sync Framework à l'aide du mécanisme spécifié.
Interface | Mécanisme |
---|---|
Retournée par une méthode telle qu'IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins. |
|
Passée à IProviderConverterRegistration::RegisterProviderConverter. |
|
Retournée lorsque IID_ISupportLastWriteTime est passé à la méthode QueryInterface de l'objet d'extracteur de données. Il s'agit généralement d'un objet ISynchronousDataRetriever. |
|
Passée à ISyncDataConversionControl::SetSourceDataConverter ou ISyncDataConversionControl::SetDestinationDataConverter. |
|
Passée à des méthodes telles qu'IProviderCustomFilteredSyncServices::CreateCustomFilterInfo ou IFilterKeyMap::AddFilter. |
|
Passée à IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap ou IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap. |
Implémentée par des applications de synchronisation
Les interfaces suivantes sont implémentées par une application de synchronisation pour recevoir une notification des événements qui se produisent pendant la synchronisation. Sync Framework obtient ces interfaces en passant l'IID spécifié à la méthode QueryInterface de l'interface ISyncCallback qui est passée à ISyncSession::RegisterCallback.
Interface | IID |
---|---|
IID_ISyncCallback |
|
IID_ISyncCallback2 |
|
IID_ISyncConstraintCallback |
Codes d'erreur
Sync Framework utilise un ensemble d'erreurs personnalisées pour signaler les problèmes. Pour plus d'informations, consultez Codes d'erreur Sync Framework.
Voir aussi
Concepts
API non managée Sync Framework
Microsoft Sync Framework
Principes de base des fournisseurs personnalisés
Gestion des métadonnées pour les fournisseurs standard
Implémentation d'un fournisseur personnalisé standard
Implémentation d'une application de synchronisation