Compartilhar via


Implementando um provedor personalizado padrão

No MicrosoftSync Framework, um provedor de sincronização é um componente de software que permite a uma réplica sincronizar seus dados com outras réplicas. Usando uma sessão de sincronização, um aplicativo de sincronização conecta um provedor de destino com um provedor de origem para sincronizar itens que foram alterados na réplica de origem para a réplica de destino. Um exemplo simples de provedor de sincronização é um que gerencia uma pasta em um sistema de arquivos. Este provedor pode ser conectado a outro provedor que também gerencia uma pasta para sincronizar os arquivos em sua pasta com os arquivos na pasta do outro provedor.

Durante a sincronização, o provedor de destino fornece seu conhecimento atual, aceita uma lista de alterações da origem, detecta quaisquer conflitos entre a lista e seus próprios itens, pode filtrar a lista de itens e aplica as alterações ao seu repositório de dados. O provedor de origem usa o conhecimento atual da réplica de destino para determinar quais alterações estão na réplica de origem sobre a qual a réplica de destino não tem conhecimento, pode filtrar a lista de alterações e envia a lista de alterações ao provedor de destino. O Sync Framework fornece componentes para manipular muitas dessas tarefas em nome desses provedores.

Implementando um provedor de sincronização

Um provedor de sincronização pode ser implementado usando o código gerenciado ou não gerenciado.

Observação sobre segurançaObservação sobre segurança

O Sync Framework trata provedores de sincronização como código de confiança. Portanto, um aplicativo que invoca um provedor de sincronização deve estabelecer que o provedor é de confiança ou tendo conhecimento explícito do provedor ou usando outro mecanismo como uma assinatura digital.

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

A tarefa principal ao desenvolver um provedor é implementar a classe abstrata KnowledgeSyncProvider (que herda da classe abstrata SyncProvider) e as interfaces IChangeDataRetriever e INotifyingChangeApplierTarget.

Antes de a sincronização iniciar, o provedor deve disponibilizar sua implementação de SyncProvider para o aplicativo de sincronização usando qualquer mecanismo requerido pelo aplicativo.

Durante uma sincronização típica, o Sync Framework faz as seguintes chamadas básicas:

  • BeginSession é chamado em ambos provedores. Isso informa um provedor que está se unindo a uma sessão de sincronização.

  • GetSyncBatchParameters é chamado no provedor de destino. O provedor de destino retorna seu conhecimento e o tamanho de lote necessário.

  • GetChangeBatch é chamado no provedor de origem e passa o conhecimento do provedor de destino. O provedor de origem usar o conhecimento do provedor de destino para detectar alterações e retorna um lote destas. Para obter mais informações, consulte Enumerando alterações.

  • ProcessChangeBatch é chamado no provedor de destino e passa a lista de alterações do provedor de origem. O provedor de destino usa o componente aplicador de alterações do Sync Framework para detectar conflitos e para aplicar as alterações. Para obter mais informações, consulte Manipulando conflitos e Aplicando alterações.

  • LoadChangeData é chamado no provedor de origem para cada alteração no lote. O provedor de origem retorna uma interface para o seu mecanismo de transferência de dados.

  • SaveItemChange é chamado no provedor de destino para cada alteração no lote. O provedor de destino usa o mecanismo de transferência da origem para transferir os dados associados à alteração.

  • StoreKnowledgeForScope é chamado no provedor de destino. O provedor de destino salva o conhecimento passado como o conhecimento atual.

  • EndSession é chamado em ambos provedores. Isso informa um provedor que está saindo de uma sessão de sincronização a qual havia se unido previamente.

Para obter mais informações sobre como criar um provedor de sincronização, consulte Como criar um provedor de sincronização gerenciado.

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

A tarefa principal quando você está desenvolvendo um provedor é implementar as interfaces IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever e ISynchronousNotifyingChangeApplierTarget. Versões assíncronas de algumas dessas interfaces também existem; consulte Interface IAsynchronousDataRetriever e Interface IAsynchronousNotifyingChangeApplierTarget.

Antes da sincronização iniciar, o provedor deve disponibilizar sua implementação de ISyncProvider para o aplicativo de sincronização usando qualquer mecanismo requerido pelo aplicativo.

Durante uma sincronização típica, o Sync Framework faz as seguintes chamadas básicas:

  • BeginSession é chamado em ambos provedores. Isso informa um provedor que está se unindo a uma sessão de sincronização.

  • GetSyncBatchParameters é chamado no provedor de destino. O provedor de destino retorna seu conhecimento e o tamanho de lote necessário.

  • GetChangeBatch é chamado no provedor de origem e passa o conhecimento do provedor de destino. O provedor de origem usar o conhecimento do provedor de destino para detectar alterações e retorna um lote destas. Para obter mais informações, consulte Enumerando alterações.

  • ProcessChangeBatch é chamado no provedor de destino e passa a lista de alterações do provedor de origem. O provedor de destino usa o componente aplicador de alterações do Sync Framework para detectar conflitos e para aplicar as alterações. Para obter mais informações, consulte Manipulando conflitos e Aplicando alterações.

  • LoadChangeData é chamado no provedor de origem para cada alteração no lote. O provedor de origem retorna uma interface para o seu mecanismo de transferência de dados.

  • SaveChange é chamado no provedor de destino para cada alteração no lote. O provedor de destino usa o mecanismo de transferência da origem para transferir os dados associados à alteração.

  • SaveKnowledge é chamado no provedor de destino. O provedor de destino salva o conhecimento passado como o conhecimento atual.

  • EndSession é chamado em ambos provedores. Isso informa um provedor que está saindo de uma sessão de sincronização a qual havia se unido previamente.

Para obter mais informações sobre como criar um provedor de sincronização, consulte Como criar um provedor de sincronização não gerenciado.

Consulte também

Referência

KnowledgeSyncProvider

SyncProvider

IChangeDataRetriever

INotifyingChangeApplierTarget

Outros recursos

Microsoft Sync Framework

Como criar um provedor de sincronização não gerenciado

Enumerando alterações

Manipulando conflitos

Aplicando alterações

Sincronizando unidades de alteração

Relatando o progresso da sincronização

Filtrando dados de sincronização

Suportando tarefas de sincronização simultâneas

Considerações para criar um provedor personalizado padrão

Interface IKnowledgeSyncProvider

Interface ISynchronousDataRetriever

Interface ISyncProvider

Interface ISynchronousNotifyingChangeApplierTarget

Interoperando com feeds do FeedSync

Recuperando uma réplica desatualizada