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 |
---|---|
Metadados |
|
Metadados |
|
Filtragem |
|
Metadados |
|
Metadados |
|
Metadados |
|
Sessão |
|
Metadados |
|
Serviço de aplicação de alterações |
|
Conflitos de restrição |
|
Conflitos de simultaneidade |
|
Conflitos de restrição |
|
Filtragem |
|
Filtragem |
|
Metadados |
|
Conflitos de restrição |
|
Sincronização de recuperação |
|
Retorno de chamada de aplicativo |
|
Retorno de chamada de aplicativo |
|
Conflitos de simultaneidade |
|
Aplicação de alterações |
|
Controle de versão |
|
Metadados |
|
Metadados |
|
Filtragem |
|
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 |
---|---|
IID_IApplicationSyncServices |
|
IID_IClockVectorServices |
|
IID_IProviderCustomFilteredSyncServices |
|
IID_IProviderFilteredSyncServices |
|
IID_IProviderFilteredSyncServices2 |
|
IID_IProviderSyncServices |
|
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 |
---|---|---|
IID_ISyncChangeBatch |
O lote de alterações não pode fazer parte de uma sincronização de recuperação. |
|
IID_ISyncChangeBatch2 |
Sempre. |
|
IID_ISyncChangeBatchAdvanced |
Sempre. |
|
IID_ISyncChangeBatchBase |
Sempre. |
|
IID_ISyncChangeBatchBase2 |
Sempre. |
|
IID_ISyncChangeBatchWithFilterKeyMap |
Sempre. |
|
IID_ISyncChangeBatchWithPrerequisite |
Sempre. |
|
IID_ISyncFullEnumerationChangeBatch |
O lote de alterações deve fazer parte de uma sincronização de recuperação. |
|
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 |
---|---|
IID_ISyncChange |
|
IID_ISyncChangeWithFilterKeyMap |
|
IID_ISyncChangeWithPrerequisite |
|
IID_ISyncFullEnumerationChange |
|
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 |
---|---|
Passando IID_IFilterTrackingSyncChangeBuilder para o método QueryInterface de um objeto 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 |
---|---|
Chamando IEnumSyncChangeUnits::Next. |
|
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 |
---|---|
Chamando IProviderSyncServices::CreateDestinationChangeVersionsBuilder. |
|
Passando IID_IDestinationChangeVersionsBuilder2 para o método QueryInterface de um objeto IDestinationChangeVersionsBuilder. |
|
Chamando ISyncChangeBatchBase::GetChangeEnumerator ou IDestinationChangeVersionsBuilder::GetChangeEnumerator. |
|
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 |
---|---|
IID_IAsynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier2 |
O aplicador de alterações registra a seguinte interface no provedor de destino chamando IAsynchronousNotifyingChangeApplierTarget::RegisterCallback.
Interface | IID |
---|---|
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 |
---|---|
Passada para métodos como ISynchronousDataRetriever::LoadChangeData. |
|
Passando IID_IFilterTrackingSaveChangeContext para o método QueryInterface de um objeto ISaveChangeContext ou ISaveChangeWithChangeUnitsContext. |
|
Chamando IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange ou IRecoverableError::GetRecoverableErrorDataForChangeUnit. |
|
Passada para ISynchronousNotifyingChangeApplierTarget::SaveChange e IAsynchronousNotifyingChangeApplierTarget::SaveChange. |
|
Passando IID_ISaveChangeContext2 para o método QueryInterface de um objeto ISaveChangeContext. |
|
Passada para ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits e IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits. |
|
Passando IID_ISaveChangeWithChangeUnitsContext2 para o método QueryInterface de um objeto ISaveChangeWithChangeUnitsContext. |
|
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 |
---|---|
Chamando IChangeApplicationServices::GetChangeApplicationContext. |
|
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 |
---|---|
Pode ser implementada por um provedor ou obtida por meio da passagem de IID_IConflictLogAccess para o método QueryInterface de um objeto IMemoryConflictLog. |
|
Pode ser implementada por um provedor ou obtida por meio da passagem de IID_IConflictLogWriter para o método QueryInterface de um objeto IMemoryConflictLog. |
|
Chamando IProviderSyncServices2::CreateLoggedConflictsEnumBuilder. |
|
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 |
---|---|
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. |
|
Chamando IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo. |
|
Chamando IProviderCustomFilteredSyncServices::CreateCustomFilterInfo. |
|
Chamando IProviderCustomFilteredSyncServices::CreateFilterKeyMap ou ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap. |
|
Passada para IRequestFilteredSync::SpecifyFilter. |
|
Passada para IFilterTrackingProvider::SpecifyTrackedFilters. |
|
Chamando métodos como IProviderFilteredSyncServices::CreateFilterInfo. |
|
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 |
---|---|
IID_ISyncKnowledge |
|
IID_ISyncKnowledge2 |
|
IID_IKnowledgeWithMarkers |
|
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 |
---|---|
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 |
---|---|
ISyncKnowledge::FindClockVectorForItem ou ISyncKnowledge::FindClockVectorForChangeUnit |
|
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 |
---|---|
Passando IID_IConstructReplicaKeyMap para o método QueryInterface de um objeto IReplicaKeyMap. |
|
Passando IID_ICoreFragmentInspector para ISyncKnowledge2::GetInspector. |
|
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 |
---|---|
Passando IID_ISyncSessionExtendedErrorInfo para o método QueryInterface de um objeto ISyncSession. |
|
Chamando IProviderSyncServices2::CreateSyncSessionState. Também passada pelo Sync Framework para IKnowledgeSyncProvider::BeginSession e IKnowledgeSyncProvider::EndSession. |
|
Passando IID_ISyncSessionState2 para o método QueryInterface de um objeto ISyncSessionState. |
|
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 |
---|---|
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 |
---|---|
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 |
---|---|
IID_IKnowledgeSyncProvider |
|
IID_ISyncProvider |
|
IID_IFilterTrackingProvider |
|
IID_IRequestFilteredSync |
|
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 |
---|---|
IID_ISynchronousNotifyingChangeApplierTarget |
|
IID_ISynchronousNotifyingChangeApplierTarget2 |
|
IID_IFilteredReplicaNotifyingChangeApplierTarget |
|
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 |
---|---|
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 |
---|---|
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 |
---|---|
Retornada por um método como IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins. |
|
Passada para IProviderConverterRegistration::RegisterProviderConverter. |
|
Retornada quando IID_ISupportLastWriteTime é passado para o QueryInterface do objeto recuperador de dados. Normalmente, é um objeto ISynchronousDataRetriever. |
|
Passada para ISyncDataConversionControl::SetSourceDataConverter ou ISyncDataConversionControl::SetDestinationDataConverter. |
|
Passada para métodos como IProviderCustomFilteredSyncServices::CreateCustomFilterInfo ou IFilterKeyMap::AddFilter. |
|
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 |
---|---|
IID_ISyncCallback |
|
IID_ISyncCallback2 |
|
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