Kernkomponenten von Sync Framework
Kernkomponenten von Sync Framework können von einer nicht verwalteten Sprache zum Ausführen der Synchronisierung verwendet werden. Mit diesen Komponenten können Metadaten verwaltet und Synchronisierungsanbieter sowie Anwendungen erstellt werden.
Strukturen, Enumerationen und Flags
In der folgenden Tabelle sind die von Sync Framework definierten Strukturen, Enumerationen und Sätze von Flags aufgeführt, sowie die Funktion, die der jeweiligen Komponente normalerweise zugeordnet ist.
Komponente | Zugeordnete Funktion |
---|---|
Metadaten |
|
Metadaten |
|
Filterung |
|
Metadaten |
|
Metadaten |
|
Metadaten |
|
Sitzung |
|
Metadaten |
|
Änderungsanwendungsdienst |
|
Einschränkungskonflikte |
|
Parallelitätskonflikte |
|
Einschränkungskonflikte |
|
Filterung |
|
Filterung |
|
Metadaten |
|
Einschränkungskonflikte |
|
Wiederherstellungssynchronisierung |
|
Anwendungsrückruf |
|
Anwendungsrückruf |
|
Parallelitätskonflikte |
|
Anwenden von Änderungen |
|
Versionsverwaltung |
|
Metadaten |
|
Metadaten |
|
Filterung |
|
Metadaten |
Von Sync Framework implementierte Schnittstellen
Die folgenden Schnittstellen werden von Sync Framework implementiert.
Factoryschnittstellen
Die folgenden Schnittstellen werden hauptsächlich zum Erstellen von anderen Sync Framework-Komponenten verwendet. Jede dieser Schnittstellen kann erstellt werden, indem CLSID_SyncServices und die angegebene IID an CoCreateInstance übergeben werden.
Schnittstelle | IID |
---|---|
IID_IApplicationSyncServices |
|
IID_IClockVectorServices |
|
IID_IProviderCustomFilteredSyncServices |
|
IID_IProviderFilteredSyncServices |
|
IID_IProviderFilteredSyncServices2 |
|
IID_IProviderSyncServices |
|
IID_IProviderSyncServices2 |
Änderungsbatchschnittstellen
Die folgenden Schnittstellen stellen einen Batch von Änderungen dar. Jede Schnittstelle kann abgerufen werden, indem die angegebene IID an die QueryInterface-Methode einer beliebigen anderen Schnittstelle übergeben wird. Einige Schnittstellen werden nur implementiert, wenn die angegebenen Bedingungen erfüllt werden.
Schnittstelle | IID | Bedingung |
---|---|---|
IID_ISyncChangeBatch |
Der Änderungsbatch darf nicht Teil einer Wiederherstellungssynchronisierung sein. |
|
IID_ISyncChangeBatch2 |
Immer. |
|
IID_ISyncChangeBatchAdvanced |
Immer. |
|
IID_ISyncChangeBatchBase |
Immer. |
|
IID_ISyncChangeBatchBase2 |
Immer. |
|
IID_ISyncChangeBatchWithFilterKeyMap |
Immer. |
|
IID_ISyncChangeBatchWithPrerequisite |
Immer. |
|
IID_ISyncFullEnumerationChangeBatch |
Der Änderungsbatch muss Teil einer Wiederherstellungssynchronisierung sein. |
|
IID_ISyncFullEnumerationChangeBatch2 |
Der Änderungsbatch muss Teil einer Wiederherstellungssynchronisierung sein. |
Die folgenden Schnittstellen stellen eine einzelne Änderung dar. Jede Schnittstelle kann abgerufen werden, indem die angegebene IID an die QueryInterface-Methode einer beliebigen anderen Schnittstelle übergeben wird.
Schnittstelle | IID |
---|---|
IID_ISyncChange |
|
IID_ISyncChangeWithFilterKeyMap |
|
IID_ISyncChangeWithPrerequisite |
|
IID_ISyncFullEnumerationChange |
|
IID_ISyncMergeTombstoneChange |
Die folgenden Schnittstellen werden verwendet, um einem ISyncChange-Objekt zusätzliche Informationen hinzuzufügen. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Übergeben von IID_IFilterTrackingSyncChangeBuilder an die QueryInterface-Methode eines ISyncChangeBuilder-Objekts. |
|
Wird von verschiedenen Methoden zurückgegeben, z. B. ISyncChangeBatchBase::AddItemMetadataToGroup. |
Die folgenden Schnittstellen werden verwendet, um Änderungseinheiten zu behandeln. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Aufrufen von IEnumSyncChangeUnits::Next. |
|
Aufrufen einer Methode wie z. B. ISyncChange::GetChangeUnits. |
Die folgenden Schnittstellen werden verwendet, um eine Liste von Änderungen zu erstellen oder aufzulisten. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Aufrufen von IProviderSyncServices::CreateDestinationChangeVersionsBuilder. |
|
Übergeben von IID_IDestinationChangeVersionsBuilder2 an die QueryInterface-Methode eines IDestinationChangeVersionsBuilder-Objekts. |
|
Aufrufen von ISyncChangeBatchBase::GetChangeEnumerator oder IDestinationChangeVersionsBuilder::GetChangeEnumerator. |
|
Übergeben von IID_IFilterTrackingSyncChangeBuilder an die QueryInterface-Methode eines IDestinationChangeVersionsBuilder-Objekts. |
Änderungsanwenderschnittstellen
Die folgenden Schnittstellen können vom Zielanbieter verwendet werden, um das Behandeln von Konflikten und das Anwenden von Änderungen zu unterstützen.
Jede der Schnittstellen in der folgenden Tabelle kann abgerufen werden, indem die angegebene IID an die IProviderSyncServices::CreateChangeApplier-Methode oder die QueryInterface-Methode einer der anderen Schnittstellen in der Tabelle übergeben wird.
Schnittstelle | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier2 |
Der Änderungsanwender registriert folgende Schnittstelle beim Zielanbieter durch Aufrufen von IAsynchronousNotifyingChangeApplierTarget::RegisterCallback.
Schnittstelle | IID |
---|---|
IAsynchronousNotifyingChangeApplierTargetCallback-Schnittstelle |
IID_IAsynchronousNotifyingChangeApplierTargetCallback |
Die folgenden Schnittstellen werden verwendet, um während Konflikterkennung und Änderungsanwendung zwischen dem Änderungsanwender und einem Anbieter zu kommunizieren. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Übergeben an Methoden wie z. B. ISynchronousDataRetriever::LoadChangeData. |
|
Übergeben von IID_IFilterTrackingSaveChangeContext an die QueryInterface-Methode eines ISaveChangeContext-Objekts oder ISaveChangeWithChangeUnitsContext-Objekts. |
|
Aufrufen von IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange oder IRecoverableError::GetRecoverableErrorDataForChangeUnit. |
|
Übergeben an ISynchronousNotifyingChangeApplierTarget::SaveChange und IAsynchronousNotifyingChangeApplierTarget::SaveChange. |
|
Übergeben von IID_ISaveChangeContext2 an die QueryInterface-Methode eines ISaveChangeContext-Objekts. |
|
Übergeben an ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits und IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits. |
|
Übergeben von IID_ISaveChangeWithChangeUnitsContext2 an die QueryInterface-Methode eines ISaveChangeWithChangeUnitsContext-Objekts. |
|
Übergeben an IAsynchronousDataRetriever::RegisterCallback. |
Die folgenden Schnittstellen können anstelle eines Standardänderungsanwenders verwendet werden, wenn größere Flexibilität erforderlich ist. Jede Schnittstelle wird mit dem angegebenen Mechanismus abgerufen.
Schnittstelle | Wird abgerufen durch |
---|---|
Aufrufen von IChangeApplicationServices::GetChangeApplicationContext. |
|
Übergeben von IID_IChangeApplicationServices an IProviderSyncServices::CreateChangeApplier. |
Konfliktprotokollierung
Die folgenden Schnittstellen werden verwendet, um Konflikte zu protokollieren. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Kann von einem Anbieter implementiert werden oder durch Übergeben von IID_IConflictLogAccess an die QueryInterface-Methode eines IMemoryConflictLog-Objekts abgerufen werden. |
|
Kann von einem Anbieter implementiert werden oder durch Übergeben von IID_IConflictLogWriter an die QueryInterface-Methode eines IMemoryConflictLog-Objekts abgerufen werden. |
|
Aufrufen von IEnumLoggedConflictsBuilder::GetChangeEnumerator. |
|
Aufrufen von IProviderSyncServices2::CreateLoggedConflictsEnumBuilder. |
|
Aufrufen von IProviderSyncServices2::CreateLoggedConflict. |
|
Aufrufen von IProviderSyncServices2::CreateMemoryConflictLog. |
Filterung
Die folgenden Schnittstellen stellen Informationen zu Filtern dar, die zum Steuern der im Synchronisierungsbereich enthaltenen Daten verwendet werden. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Übergeben des SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST-Flags an IProviderFilteredSyncServices::CreateFilterInfo und anschließendes Übergeben von IID_IChangeUnitListFilterInfo an die QueryInterface-Methode des zurückgegebenen ISyncFilterInfo-Objekts. |
|
Aufrufen von IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo. |
|
Aufrufen von IProviderCustomFilteredSyncServices::CreateCustomFilterInfo. |
|
Aufrufen von IProviderCustomFilteredSyncServices::CreateFilterKeyMap oder ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap. |
|
Übergeben an IRequestFilteredSync::SpecifyFilter. |
|
Übergeben an IFilterTrackingProvider::SpecifyTrackedFilters. |
|
Aufrufen von Methoden wie z. B. IProviderFilteredSyncServices::CreateFilterInfo. |
|
Übergeben von IID_ISyncFilterInfo2 an die QueryInterface-Methode eines ISyncFilterInfo-Objekts. |
Wissensmetadaten
Die folgenden Schnittstellen stellen ein Wissensobjekt dar. Jede der Schnittstellen in der Tabelle kann abgerufen werden, indem die angegebene IID an die QueryInterface-Methode einer der anderen Schnittstellen in der Tabelle übergeben wird. Beachten Sie, dass manche der Methoden bei einigen der Schnittstellen fehlschlagen, wenn die minimal unterstützte Version des Wissensobjekts nicht dem erwarteten Wert entspricht. Beispielsweise schlägt ISyncKnowledge::GetSingleItemExceptions fehl, wenn die minimal unterstützte Version nicht SYNC_SERIALIZATION_VERSION_V1 ist. Außerdem wird bei einigen Methoden die minimal unterstützte Version geändert. Beispielsweise wird bei IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker die minimale unterstützte Version auf SYNC_SERIALIZATION_VERSION_V3 festgelegt. Einzelheiten zur minimal unterstützten Version, die erforderlich ist oder festgelegt wird, finden Sie in der Referenzdokumentation zur jeweiligen Methode.
Schnittstelle | IID |
---|---|
IID_ISyncKnowledge |
|
IID_ISyncKnowledge2 |
|
IID_IKnowledgeWithMarkers |
|
IID_IForgottenKnowledge |
Die folgenden Schnittstellen stellen die Komponenten eines Wissensobjekts dar, das eine minimal unterstützte Version von SYNC_SERIALIZATION_VERSION_V1 aufweist. Die minimale unterstützte Version eines Wissensobjekts kann durch Aufrufen von ISyncKnowledge2::GetMinimumSupportedVersion abgerufen werden. Jede Schnittstelle kann abgerufen werden, indem die angegebene Methode aufgerufen wird.
Schnittstelle | Wird abgerufen durch Aufrufen von |
---|---|
Die folgenden Schnittstellen stellen die Komponenten aller Versionen eines Wissensobjekts dar. Jede Schnittstelle kann abgerufen werden, indem die angegebene Methode aufgerufen wird.
Schnittstelle | Wird abgerufen durch Aufrufen von |
---|---|
ISyncKnowledge::FindClockVectorForItem oder ISyncKnowledge::FindClockVectorForChangeUnit |
|
IProviderSyncServices::CreateReplicaKeyMap oder ISyncKnowledge::GetReplicaKeyMap. |
Die folgenden Schnittstellen werden verwendet, um ein Wissensobjekt zu überprüfen oder zu erstellen. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Übergeben von IID_IConstructReplicaKeyMap an die QueryInterface-Methode eines IReplicaKeyMap-Objekts. |
|
Übergeben von IID_ICoreFragmentInspector an ISyncKnowledge2::GetInspector. |
|
Aufrufen von IClockVectorServices::CreateKnowledgeBuilder. |
|
Übergeben von IID_IKnowledgeBuilder2 an die QueryInterface-Methode eines IKnowledgeBuilder-Objekts. |
Sitzungsschnittstellen
Die folgenden Schnittstellen werden von einer Synchronisierungsanwendung verwendet, um eine Synchronisierungssitzung zu starten und Informationen zur Sitzung abzurufen. Jede Schnittstelle kann mit dem angegebenen Mechanismus abgerufen werden.
Schnittstelle | Wird abgerufen durch |
---|---|
Aufrufen von IApplicationSyncServices::CreateSyncSession. |
|
Übergeben von IID_ISyncSessionExtendedErrorInfo an die QueryInterface-Methode eines ISyncSession-Objekts. |
|
Aufrufen von IProviderSyncServices2::CreateSyncSessionState. Ebenfalls übergeben von Sync Framework an IKnowledgeSyncProvider::BeginSession und IKnowledgeSyncProvider::EndSession. |
|
Übergeben von IID_ISyncSessionState2 an die QueryInterface-Methode eines ISyncSessionState-Objekts. |
|
Übergeben von IID_ISyncDataConversionControl an die QueryInterface-Methode eines ISyncSessionState-Objekts. |
Schnittstellen für Anwendungsrückrufdaten
Die folgenden Schnittstellen werden von Sync Framework mit der angegebenen Rückrufmethode an eine Synchronisierungsanwendung übergeben.
Schnittstelle | Rückrufmethode |
---|---|
Weitere Schnittstellen
Die folgende Schnittstelle wird verwendet, um einen Anbieterkonverter zu registrieren. Sie kann durch Aufrufen der angegebenen Methode abgerufen werden.
Schnittstelle | Wird abgerufen durch Aufrufen von |
---|---|
Implementiert durch Synchronisierungsanbieter
Die folgenden Schnittstellen werden durch Synchronisierungsanbieter implementiert.
Anbieterschnittstellen
Jede der folgenden Schnittstellen muss von der QueryInterface-Methode des ISyncProvider-Objekts zurückgegeben werden, wenn es die angegebene IID empfängt. Diese Schnittstellen werden von der Synchronisierungsanwendung mit IApplicationSyncServices::CreateSyncSession an das Synchronisierungssitzungsobjekt übergeben.
Schnittstelle | IID |
---|---|
IID_IKnowledgeSyncProvider |
|
IID_ISyncProvider |
|
IID_IFilterTrackingProvider |
|
IID_IRequestFilteredSync |
|
IID_ISupportFilteredSync |
Änderungsanwenderzielschnittstellen
Die folgenden Schnittstellen werden von einem Zielanbieter implementiert, der einen synchronen Änderungsanwender verwendet. Jede implementierte Schnittstelle muss von der QueryInterface-Methode des ISynchronousNotifyingChangeApplierTarget-Objekts zurückgegeben werden, wenn es die angegebene IID empfängt. Diese Schnittstellen werden mit einer Methode wie ISynchronousNotifyingChangeApplier::ApplyChanges an die Änderungsanwenderkomponente übergeben.
Schnittstelle | IID |
---|---|
IID_ISynchronousNotifyingChangeApplierTarget |
|
IID_ISynchronousNotifyingChangeApplierTarget2 |
|
IID_IFilteredReplicaNotifyingChangeApplierTarget |
|
IID_IFilterTrackingNotifyingChangeApplierTarget |
Die folgende Schnittstelle wird von einem Zielanbieter implementiert, der einen asynchronen Änderungsanwender verwendet. Diese Schnittstelle wird mithilfe einer Methode wie IAsynchronousNotifyingChangeApplier::ApplyChanges an die Änderungsanwenderkomponente übergeben.
Schnittstelle | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTarget |
Datenabrufschnittstellen
Die folgenden Schnittstellen werden von einem Zielanbieter implementiert, der einen Änderungsanwender verwendet. Diese Schnittstellen werden mit einer Methode wie der angegebenen an die Änderungsanwenderkomponente übergeben.
Schnittstelle | Methode |
---|---|
Weitere Anbieterschnittstellen
Die folgenden Schnittstellen werden von einem Anbieter implementiert, um verschiedene Funktionen wie Filterung oder Datenkonvertierung zu nutzen. Die Schnittstelle wird mit dem angegebenen Mechanismus an Sync Framework übergeben.
Schnittstelle | Mechanismus |
---|---|
Wird von einer Methode wie IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins zurückgegeben. |
|
Übergeben an IProviderConverterRegistration::RegisterProviderConverter. |
|
Wird zurückgegeben, wenn IID_ISupportLastWriteTime an die QueryInterface des Datenabrufobjekts übergeben wird. Dabei handelt es sich normalerweise um ein ISynchronousDataRetriever-Objekt. |
|
Übergeben an ISyncDataConversionControl::SetSourceDataConverter oder ISyncDataConversionControl::SetDestinationDataConverter. |
|
Übergeben an Methoden wie z. B. IProviderCustomFilteredSyncServices::CreateCustomFilterInfo oder IFilterKeyMap::AddFilter. |
|
Übergeben an IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap oder IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap. |
Implementiert durch Synchronisierungsanwendungen
Die folgenden Schnittstellen werden von einer Synchronisierungsanwendung implementiert, um Benachrichtigungen über Ereignisse zu empfangen, die während der Synchronisierung auftreten. Sync Framework ruft diese Schnittstellen ab, indem die angegebene IID an die QueryInterface-Methode der ISyncCallback-Schnittstelle übergeben wird, die an ISyncSession::RegisterCallback übergeben wird.
Schnittstelle | IID |
---|---|
IID_ISyncCallback |
|
IID_ISyncCallback2 |
|
IID_ISyncConstraintCallback |
Fehlercodes
Sync Framework verwendet einen Satz benutzerdefinierter Fehler, um Probleme zu melden. Weitere Informationen finden Sie unter Fehlercodes für Sync Framework.
Siehe auch
Konzepte
Nicht verwaltete Sync Framework-API
Microsoft Sync Framework
Grundlegendes zu benutzerdefinierten Anbietern
Verwalten von Metadaten für Standardanbieter
Implementieren eines benutzerdefinierten Standardanbieters
Implementieren einer Synchronisierungsanwendung