Compartilhar via


Componentes principais do Sync Framework

Os componentes principais do Sync Framework podem ser usados com base em uma linguagem não gerenciada para executar a sincronização. Esses componentes podem ser usados para gerenciar metadados e criar provedores e aplicativos de sincronização.

Estruturas, enumerações e sinalizadores

A seguinte tabela lista as estruturas, as enumerações e os conjuntos de sinalizadores definidos pelo Sync Framework e também a qual recurso cada componente está associado normalmente.

Componente Recurso associado

Estrutura ID_PARAMETER_PAIR

Metadados

Estrutura ID_PARAMETERS

Metadados

Estrutura SYNC_FILTER_CHANGE

Filtragem

Estrutura SYNC_GID

Metadados

Estrutura SYNC_ID

Metadados

Estrutura SYNC_RANGE

Metadados

Estrutura SYNC_SESSION_STATISTICS

Sessão

Estrutura SYNC_VERSION

Metadados

Enumeração CHANGE_APPLICATION_ACTION

Serviço de aplicação de alterações

Enumeração COLLISION_CONFLICT_RESOLUTION_POLICY

Conflitos de restrição

Enumeração CONFLICT_RESOLUTION_POLICY

Conflitos de simultaneidade

Enumeração CONSTRAINT_CONFLICT_REASON

Conflitos de restrição

Enumeração FILTER_COMBINATION_TYPE

Filtragem

Enumeração FILTERING_TYPE

Filtragem

Enumeração KNOWLEDGE_COOKIE_COMPARISON_RESULT

Metadados

Enumeração SYNC_CONSTRAINT_RESOLVE_ACTION

Conflitos de restrição

Enumeração SYNC_FULL_ENUMERATION_ACTION

Sincronização de recuperação

Enumeração SYNC_PROGRESS_STAGE

Retorno de chamada de aplicativo

Enumeração SYNC_PROVIDER_ROLE

Retorno de chamada de aplicativo

Enumeração SYNC_RESOLVE_ACTION

Conflitos de simultaneidade

Enumeração SYNC_SAVE_ACTION

Aplicação de alterações

Enumeração SYNC_SERIALIZATION_VERSION

Controle de versão

Enumeração SYNC_STATISTICS

Metadados

Sinalizadores SYNC_CHANGE_FLAG

Metadados

Sinalizadores SYNC_FILTER_INFO_FLAG

Filtragem

Sinalizadores SYNC_SERIALIZE

Metadados

Interfaces implementadas pelo Sync Framework

As interfaces a seguir são implementadas pelo Sync Framework.

Interfaces de fábrica

As interfaces a seguir são usadas principalmente para criar outros componentes do Sync Framework. Cada uma dessas interfaces pode ser criada por meio da passagem de CLSID_SyncServices e do IID especificado para CoCreateInstance.

Interface IID

Interface IApplicationSyncServices

IID_IApplicationSyncServices

Interface IClockVectorServices

IID_IClockVectorServices

Interface IProviderCustomFilteredSyncServices

IID_IProviderCustomFilteredSyncServices

Interface IProviderFilteredSyncServices

IID_IProviderFilteredSyncServices

Interface IProviderFilteredSyncServices2

IID_IProviderFilteredSyncServices2

Interface IProviderSyncServices

IID_IProviderSyncServices

Interface IProviderSyncServices2

IID_IProviderSyncServices2

Interfaces do lote de alterações

As interfaces a seguir representam um lote de alterações. Cada interface pode ser obtida com a passagem do IID especificado para o método QueryInterface de qualquer outra interface. Algumas interfaces são implementadas apenas quando as condições especificadas são atendidas.

Interface IID Condição

Interface ISyncChangeBatch

IID_ISyncChangeBatch

O lote de alterações não pode fazer parte de uma sincronização de recuperação.

Interface ISyncChangeBatch2

IID_ISyncChangeBatch2

Sempre.

Interface ISyncChangeBatchAdvanced

IID_ISyncChangeBatchAdvanced

Sempre.

Interface ISyncChangeBatchBase

IID_ISyncChangeBatchBase

Sempre.

Interface ISyncChangeBatchBase2

IID_ISyncChangeBatchBase2

Sempre.

Interface ISyncChangeBatchWithFilterKeyMap

IID_ISyncChangeBatchWithFilterKeyMap

Sempre.

Interface ISyncChangeBatchWithPrerequisite

IID_ISyncChangeBatchWithPrerequisite

Sempre.

Interface ISyncFullEnumerationChangeBatch

IID_ISyncFullEnumerationChangeBatch

O lote de alterações deve fazer parte de uma sincronização de recuperação.

Interface ISyncFullEnumerationChangeBatch2

IID_ISyncFullEnumerationChangeBatch2

O lote de alterações deve fazer parte de uma sincronização de recuperação.

As interfaces a seguir representam uma única alteração. Cada interface pode ser obtida com a passagem do IID especificado para o método QueryInterface de qualquer outra interface.

Interface IID

Interface ISyncChange

IID_ISyncChange

Interface ISyncChangeWithFilterKeyMap

IID_ISyncChangeWithFilterKeyMap

Interface ISyncChangeWithPrerequisite

IID_ISyncChangeWithPrerequisite

Interface ISyncFullEnumerationChange

IID_ISyncFullEnumerationChange

Interface ISyncMergeTombstoneChange

IID_ISyncMergeTombstoneChange

As seguintes interfaces são usadas para adicionar informações a um objeto ISyncChange. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface IFilterTrackingSyncChangeBuilder

Passando IID_IFilterTrackingSyncChangeBuilder para o método QueryInterface de um objeto ISyncChangeBuilder.

Interface ISyncChangeBuilder

Retornada por vários métodos, como ISyncChangeBatchBase::AddItemMetadataToGroup.

As interfaces a seguir são usadas para tratar unidades de alteração. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface ISyncChangeUnit

Chamando IEnumSyncChangeUnits::Next.

Interface IEnumSyncChangeUnits

Chamando um método como ISyncChange::GetChangeUnits.

As interfaces a seguir são usadas para criar ou enumerar uma lista de alterações. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface IDestinationChangeVersionsBuilder

Chamando IProviderSyncServices::CreateDestinationChangeVersionsBuilder.

Interface IDestinationChangeVersionsBuilder2

Passando IID_IDestinationChangeVersionsBuilder2 para o método QueryInterface de um objeto IDestinationChangeVersionsBuilder.

Interface IEnumSyncChanges

Chamando ISyncChangeBatchBase::GetChangeEnumerator ou IDestinationChangeVersionsBuilder::GetChangeEnumerator.

Interface IFilterTrackingSyncChangeBuilder

Passando IID_IFilterTrackingSyncChangeBuilder para o método QueryInterface de um objeto IDestinationChangeVersionsBuilder.

Interfaces do aplicador de alterações

As interfaces a seguir podem ser usadas pelo provedor de destino para ajudar a manipular conflitos e aplicar alterações.

Qualquer interface na tabela a seguir pode ser obtida com a passagem do IID especificado para o método IProviderSyncServices::CreateChangeApplier ou para o método QueryInterface de qualquer outra interface na tabela.

Interface IID

Interface IAsynchronousNotifyingChangeApplier

IID_IAsynchronousNotifyingChangeApplier

Interface ISynchronousNotifyingChangeApplier

IID_ISynchronousNotifyingChangeApplier

Interface ISynchronousNotifyingChangeApplier2

IID_ISynchronousNotifyingChangeApplier2

O aplicador de alterações registra a seguinte interface no provedor de destino chamando IAsynchronousNotifyingChangeApplierTarget::RegisterCallback.

Interface IID

Interface IAsynchronousNotifyingChangeApplierTargetCallback

IID_IAsynchronousNotifyingChangeApplierTargetCallback

As interfaces a seguir são usadas para estabelecer a comunicação entre o aplicador de alterações e um provedor durante a detecção de conflitos e aplicação de alterações. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface ILoadChangeContext

Passada para métodos como ISynchronousDataRetriever::LoadChangeData.

Interface IFilterTrackingSaveChangeContext

Passando IID_IFilterTrackingSaveChangeContext para o método QueryInterface de um objeto ISaveChangeContext ou ISaveChangeWithChangeUnitsContext.

Interface IRecoverableErrorData

Chamando IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange ou IRecoverableError::GetRecoverableErrorDataForChangeUnit.

ISaveChangeContext Interface

Passada para ISynchronousNotifyingChangeApplierTarget::SaveChange e IAsynchronousNotifyingChangeApplierTarget::SaveChange.

Interface ISaveChangeContext2

Passando IID_ISaveChangeContext2 para o método QueryInterface de um objeto ISaveChangeContext.

Interface ISaveChangeWithChangeUnitsContext

Passada para ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits e IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits.

Interface ISaveChangeWithChangeUnitsContext2

Passando IID_ISaveChangeWithChangeUnitsContext2 para o método QueryInterface de um objeto ISaveChangeWithChangeUnitsContext.

Interface IDataRetrieverCallback

Passada para IAsynchronousDataRetriever::RegisterCallback.

As interfaces a seguir podem ser usadas em lugar de um aplicador de alterações padrão quando for necessária uma maior flexibilidade. Cada interface é obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface IChangeApplicationContext

Chamando IChangeApplicationServices::GetChangeApplicationContext.

Interface IChangeApplicationServices

Passando IID_IChangeApplicationServices para IProviderSyncServices::CreateChangeApplier.

Log de conflitos

As interfaces a seguir são usadas para registrar conflitos em log. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface IConflictLogAccess

Pode ser implementada por um provedor ou obtida por meio da passagem de IID_IConflictLogAccess para o método QueryInterface de um objeto IMemoryConflictLog.

Interface IConflictLogWriter

Pode ser implementada por um provedor ou obtida por meio da passagem de IID_IConflictLogWriter para o método QueryInterface de um objeto IMemoryConflictLog.

Interface IEnumLoggedConflicts

Chamando IEnumLoggedConflictsBuilder::GetChangeEnumerator.

Interface IEnumLoggedConflictsBuilder

Chamando IProviderSyncServices2::CreateLoggedConflictsEnumBuilder.

Interface ILoggedConflict

Chamando IProviderSyncServices2::CreateLoggedConflict.

Interface IMemoryConflictLog

Chamando IProviderSyncServices2::CreateMemoryConflictLog.

Filtragem

As seguintes interfaces representam informações sobre filtros usados para controlar os dados incluídos no escopo de sincronização. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface IChangeUnitListFilterInfo

Passando o sinalizador SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST para o IProviderFilteredSyncServices::CreateFilterInfo e passando IID_IChangeUnitListFilterInfo para o método QueryInterface do objeto ISyncFilterInfo retornado.

Interface ICombinedFilterInfo

Chamando IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo.

Interface ICustomFilterInfo

Chamando IProviderCustomFilteredSyncServices::CreateCustomFilterInfo.

Interface IFilterKeyMap

Chamando IProviderCustomFilteredSyncServices::CreateFilterKeyMap ou ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap.

Interface IFilterRequestCallback

Passada para IRequestFilteredSync::SpecifyFilter.

Interface IFilterTrackingRequestCallback

Passada para IFilterTrackingProvider::SpecifyTrackedFilters.

Interface ISyncFilterInfo

Chamando métodos como IProviderFilteredSyncServices::CreateFilterInfo.

Interface ISyncFilterInfo2

Passando IID_ISyncFilterInfo2 para o método QueryInterface de um objeto ISyncFilterInfo.

Metadados de conhecimento

As interfaces a seguir representam um objeto de conhecimento. Qualquer interface na tabela pode ser obtida com a passagem do IID especificado para o método QueryInterface de qualquer outra interface na tabela. Saiba que alguns métodos de algumas interfaces falharão quando a versão mínima com suporte do objeto de conhecimento não tiver o valor esperado, como ISyncKnowledge::GetSingleItemExceptions, que falhará quando a versão mínima com suporte não for SYNC_SERIALIZATION_VERSION_V1. Além disso, alguns métodos alterarão a versão mínima com suporte, como IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker, que definirá a versão mínima com suporte como SYNC_SERIALIZATION_VERSION_V3. Para obter detalhes sobre a versão mínima com suporte necessária ou definida, consulte a documentação de referência para cada método.

Interface IID

Interface ISyncKnowledge

IID_ISyncKnowledge

Interface ISyncKnowledge2

IID_ISyncKnowledge2

Interface IKnowledgeWithMarkers

IID_IKnowledgeWithMarkers

Interface IForgottenKnowledge

IID_IForgottenKnowledge

As interfaces a seguir representam os componentes de um objeto de conhecimento que tem uma versão mínima com suporte igual a SYNC_SERIALIZATION_VERSION_V1. A versão mínima com suporte de um objeto de conhecimento pode ser obtida chamando-se ISyncKnowledge2::GetMinimumSupportedVersion. Cada interface pode ser obtida chamando-se o método especificado.

Interface Obtida por chamada

Interface IChangeUnitException

IEnumChangeUnitExceptions::Next

Interface IRangeException

IEnumRangeExceptions::Next

Interface ISingleItemException

IEnumSingleItemExceptions::Next

Interface IEnumChangeUnitExceptions

ISyncKnowledge::GetChangeUnitExceptions

Interface IEnumRangeExceptions

ISyncKnowledge::GetRangeExceptions

Interface IEnumSingleItemExceptions

ISyncKnowledge::GetSingleItemExceptions

As interfaces a seguir representam os componentes de todas as versões de um objeto de conhecimento. Cada interface pode ser obtida chamando-se o método especificado.

Interface Obtida por chamada

Interface IClockVector

ISyncKnowledge::FindClockVectorForItem ou ISyncKnowledge::FindClockVectorForChangeUnit

Interface IClockVectorElement

IEnumClockVector::Next

Interface IEnumClockVector

IClockVector::GetClockVectorElements

Interface ICoreFragment

ICoreFragmentInspector::NextCoreFragments

Interface IReplicaKeyMap

IProviderSyncServices::CreateReplicaKeyMap ou ISyncKnowledge::GetReplicaKeyMap.

As interfaces a seguir são usadas para inspecionar ou criar um objeto de conhecimento. Cada interface pode ser obtida pelo mecanismo especificado.

Interface Obtida por

Interface IConstructReplicaKeyMap

Passando IID_IConstructReplicaKeyMap para o método QueryInterface de um objeto IReplicaKeyMap.

Interface ICoreFragmentInspector

Passando IID_ICoreFragmentInspector para ISyncKnowledge2::GetInspector.

Interface IKnowledgeBuilder

Chamando IClockVectorServices::CreateKnowledgeBuilder.

Interface IKnowledgeBuilder2

Passando IID_IKnowledgeBuilder2 para o método QueryInterface de um objeto IKnowledgeBuilder.

Interfaces da sessão

As interfaces a seguir são usadas por um aplicativo de sincronização para iniciar uma sessão de sincronização e recuperar informações sobre a sessão. Cada interface pode ser obtida com o uso do mecanismo especificado.

Interface Obtida por

Interface ISyncSession

Chamando IApplicationSyncServices::CreateSyncSession.

Interface ISyncSessionExtendedErrorInfo

Passando IID_ISyncSessionExtendedErrorInfo para o método QueryInterface de um objeto ISyncSession.

Interface ISyncSessionState

Chamando IProviderSyncServices2::CreateSyncSessionState. Também passada pelo Sync Framework para IKnowledgeSyncProvider::BeginSession e IKnowledgeSyncProvider::EndSession.

Interface ISyncSessionState2

Passando IID_ISyncSessionState2 para o método QueryInterface de um objeto ISyncSessionState.

Interface ISyncDataConversionControl

Passando IID_ISyncDataConversionControl para o método QueryInterface de um objeto ISyncSessionState.

Interfaces de retorno de chamada do aplicativo

As interfaces a seguir são passadas pelo Sync Framework para um aplicativo de sincronização com o uso do método de retorno de chamada especificado.

Interface Método de retorno de chamada

Interface IChangeConflict

ISyncCallback::OnConflict

Interface IConstraintConflict

ISyncConstraintCallback::OnConstraintConflict

Interface IRecoverableError

ISyncCallback::OnRecoverableError

Outras interfaces

A interface a seguir é usada para registrar um conversor de provedor. Ela pode ser obtida chamando-se o método especificado.

Interface Obtida por chamada

Interface IProviderConverterRegistration

IProviderSyncServices2::CreateProviderConverterRegistration

Implementada por provedores de sincronização

As interfaces a seguir são implementadas por provedores de sincronização.

Interfaces do provedor

Cada uma das interfaces a seguir deve ser retornada pelo método QueryInterface do objeto ISyncProvider quando ele recebe o IID especificado. Essas interfaces são passadas pelo aplicativo de sincronização para o objeto de sessão de sincronização com o uso de IApplicationSyncServices::CreateSyncSession.

Interface IID

Interface IKnowledgeSyncProvider

IID_IKnowledgeSyncProvider

Interface ISyncProvider

IID_ISyncProvider

Interface IFilterTrackingProvider

IID_IFilterTrackingProvider

Interface IRequestFilteredSync

IID_IRequestFilteredSync

Interface ISupportFilteredSync

IID_ISupportFilteredSync

Interface de destino do aplicador de alterações

As interfaces a seguir são implementadas por um provedor de destino que usa um aplicador de alterações síncrono. Cada interface implementada deve ser retornada pelo método QueryInterface do objeto ISynchronousNotifyingChangeApplierTarget quando ele recebe o IID especificado. Essas interfaces são passadas para o componente do aplicador de alterações com o uso de um método como ISynchronousNotifyingChangeApplier::ApplyChanges.

Interface IID

Interface ISynchronousNotifyingChangeApplierTarget

IID_ISynchronousNotifyingChangeApplierTarget

Interface ISynchronousNotifyingChangeApplierTarget2

IID_ISynchronousNotifyingChangeApplierTarget2

Interface IFilteredReplicaNotifyingChangeApplierTarget

IID_IFilteredReplicaNotifyingChangeApplierTarget

Interface IFilterTrackingNotifyingChangeApplierTarget

IID_IFilterTrackingNotifyingChangeApplierTarget

A interface a seguir é implementada por um provedor de destino que usa um aplicador de alterações assíncrono. Essa interface é passada para o componente do aplicador de alterações com o uso de um método como IAsynchronousNotifyingChangeApplier::ApplyChanges.

Interface IID

Interface IAsynchronousNotifyingChangeApplierTarget

IID_IAsynchronousNotifyingChangeApplierTarget

Interfaces do recuperador de dados

As interfaces a seguir são implementadas por um provedor de destino que usa um aplicador de alterações. Essas interfaces são passadas para o componente do aplicador de alterações com o uso de um método como o método especificado.

Interface Método

Interface IAsynchronousDataRetriever

IAsynchronousNotifyingChangeApplier::ApplyChanges.

Interface ISynchronousDataRetriever

ISynchronousNotifyingChangeApplier::ApplyChanges.

Outras interfaces do provedor

As interfaces a seguir são implementadas por um provedor para aproveitar vários recursos, como filtragem ou conversão de dados. A interface é passada para o Sync Framework com o uso do mecanismo especificado.

Interface Mecanismo

Interface IEnumItemIds

Retornada por um método como IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins.

Interface IProviderConverter

Passada para IProviderConverterRegistration::RegisterProviderConverter.

Interface ISupportLastWriteTime

Retornada quando IID_ISupportLastWriteTime é passado para o QueryInterface do objeto recuperador de dados. Normalmente, é um objeto ISynchronousDataRetriever.

Interface ISyncDataConverter

Passada para ISyncDataConversionControl::SetSourceDataConverter ou ISyncDataConversionControl::SetDestinationDataConverter.

Interface ISyncFilter

Passada para métodos como IProviderCustomFilteredSyncServices::CreateCustomFilterInfo ou IFilterKeyMap::AddFilter.

Interface ISyncFilterDeserializer

Passada para IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap ou IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap.

Implementada por aplicativos de sincronização

As seguintes interfaces são implementadas por um aplicativo de sincronização para receber notificações de eventos ocorridos durante a sincronização. O Sync Framework obtém essas interfaces passando o IID especificado para o método QueryInterface da interface ISyncCallback que é passada para ISyncSession::RegisterCallback.

Interface IID

Interface ISyncCallback

IID_ISyncCallback

Interface ISyncCallback2

IID_ISyncCallback2

Interface ISyncConstraintCallback

IID_ISyncConstraintCallback

Códigos de erro

O Sync Framework usa um conjunto de erros personalizados para informar os problemas. Para obter mais informações, consulte Códigos de erro do Sync Framework.

Consulte também

Conceitos

API não gerenciada do Sync Framework
Microsoft Sync Framework
Conceitos básicos sobre provedores personalizados
Gerenciando metadados para provedores padrão
Implementando um provedor personalizado padrão
Implementando um aplicativo de sincronização