Conceitos básicos sobre sincronização de dados

O Microsoft Estrutura de sincronização sincroniza armazenamentos de dados, ou réplicas, usando três componentes básicos: uma sessão de sincronização e dois provedores de sincronização. Para sincronizar dados, um aplicativo cria uma sessão de sincronização e a transmite para um provedor de origem e um provedor de destino. A sessão usa o provedor de origem para obter novas alterações ocorridas na réplica de origem e usa o provedor de destino para aplicar essas alterações à réplica de destino.

A criação de um provedor requer a maior parte do trabalho de desenvolvimento. Um provedor mantém metadados e conhecimento para a réplica, bem como metadados para cada item que será sincronizado. Um provedor também transfere os dados de item reais de e para o repositório de dados. Um provedor usa componentes Estrutura de sincronização para ajudar a enumerar alterações quando o provedor está agindo como uma origem, bem como para detectar conflitos e aplicar alterações quando atua como um destino.

Algoritmo de sincronização

O algoritmo para uma sincronização unidirecional inclui as seguintes etapas:

  1. A sessão obtém o conhecimento atual da réplica de destino e o envia para o provedor de origem.

  2. O provedor de origem enumera as alterações não contidas no conhecimento de destino.

  3. O provedor de origem envia as alterações para a sessão.

  4. A sessão detecta conflitos e aplica alterações à réplica de destino por meio do provedor de destino.

A sincronização bidirecional entre duas réplicas é obtida por duas sincronizações unidirecionais.

Código gerenciado O objeto SyncOrchestrator executa duas sincronizações unidirecionais quando a propriedade Direction é definida como DownloadAndUpload ou UploadAndDownload.

Código não gerenciado O aplicativo deve criar um objeto ISyncSession para cada sincronização unidirecional.

Gerenciamento de metadados

Cada réplica deve fornecer um conjunto de metadados que apresenta uma descrição dele mesmo e do seu conhecimento à comunidade de sincronização. (Uma comunidade de sincronização é um conjunto de réplicas que podem sincronizar uma com a outra.) Os metadados exigidos para cada réplica são: a ID da réplica, a contagem em escala atual, o mapa de chave de réplica, o conhecimento atual, o conhecimento esquecido, um log de conflitos e um log de marcas de exclusão. Uma réplica também deve manter metadados para cada item que será sincronizado. Os metadados exigidos para cada item são: a ID global, a versão atual e a versão de criação. Normalmente o provedor de sincronização gerencia os metadados necessários à sincronização. Porém, dependendo da implementação da réplica, pode ser mais útil para algumas partes do gerenciamento de metadados serem tratadas por um componente separado, como um serviço que limpa marcas de exclusão em horários agendados em vez de fazê-lo durante sincronização.

Para obter mais informações sobre metadados, consulte Requisitos de metadados.

Provedores de sincronização

O provedor gerencia os metadados para uma réplica e trabalha com o Sync Framework para enumerar alterações e detectar conflitos. Um provedor também trabalha com o armazenamento de itens de uma réplica para enviar dados de item quando o provedor atua como um provedor de origem, bem como para aplicar alterações quando o provedor atua como o provedor de destino.

Código gerenciado Um provedor implementa os métodos e as propriedades abstratos de KnowledgeSyncProvider, IChangeDataRetriever e INotifyingChangeApplierTarget.

Código não gerenciado Um provedor implementa as interfaces IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever e ISynchronousNotifyingChangeApplierTarget (ou para provedores assíncronos, as versões assíncronas).

Para obter mais informações sobre provedores de sincronização e como implementar e usar essas interfaces, consulte Provedores de sincronização.

Aplicativos de sincronização

O aplicativo é o componente que cria o objeto de sessão de sincronização, conecta-o aos provedores e hospeda o tempo de execução de sincronização.

Implementando um aplicativo de sincronização usando código gerenciado

Para iniciar a sincronização, crie um objeto SyncOrchestrator. Depois, defina as propriedades LocalProvider e RemoteProvider das interfaces SyncProvider dos dois provedores que você deseja sincronizar. O aplicativo obtém ou cria as interfaces de provedor usando o método apropriado. Depois de criado o objeto SyncOrchestrator, chame Synchronize para iniciar a sincronização. Nesse momento, Estrutura de sincronização faz todas as chamadas necessárias nos dois provedores para executar a sincronização.

Os objetos SyncOrchestrator e KnowledgeSyncProvider geram eventos durante a sincronização. Para receber um evento, implemente um método de manipulador de eventos e registre-se para receber o evento.

Implementando um aplicativo de sincronização usando código não gerenciado

Para iniciar a sincronização, crie um objeto ISyncSession passando CLSID_SyncServices e IID_IApplicationSyncServices para a função CoCreateInstance e, em seguida, chame IApplicationSyncServices::CreateSyncSession no objeto IApplicationSyncServices retornado.

O método CreateSyncSession requer as interfaces de ISyncProvider dos dois provedores que você deseja sincronizar. O aplicativo obtém ou cria as interfaces de provedor usando o método apropriado. Depois de criado o objeto ISyncSession, chame ISyncSession::Start para iniciar a sincronização. Nesse momento, Estrutura de sincronização faz todas as chamadas necessárias nos dois provedores para executar a sincronização.

O objeto ISyncSession gera eventos durante a sincronização. Para receber eventos, implemente a interface ISyncCallback e registre-a usando ISyncSession::RegisterCallback.

Consulte também

Referência

Interface ISyncSession
Interface ISyncProvider
IKnowledgeSyncProvider Interface
Interface ISynchronousDataRetriever
Interface ISynchronousNotifyingChangeApplierTarget
Interface IApplicationSyncServices
Interface IProviderSyncServices
Interface ISyncCallback
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

Conceitos

Requisitos de metadados
Provedores de sincronização
Aplicativos de sincronização

Outros recursos

Microsoft Sync Framework