Compartilhar via


Implementando um provedor personalizado padrão

No Microsoft Sync 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.

Security noteSegurança Observação:

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 da 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 a um provedor que ele está saindo de uma sessão de sincronização à 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

Interface IKnowledgeSyncProvider
Interface ISynchronousDataRetriever
Interface ISyncProvider
Interface ISynchronousNotifyingChangeApplierTarget
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget

Conceitos

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
Interoperando com feeds do FeedSync
Recuperando uma réplica desatualizada