Compartilhar via


Interoperando com um provedor

O serviço de armazenamento de metadados fornece métodos para ajudar a simplificar a implementação de um provedor de sincronização. Esses métodos ajudam executar as seguintes tarefas:

  • O provedor de origem para enumerar alterações.

  • O provedor de origem para filtrar alterações durante a enumeração de alterações.

  • O provedor de destino para obter versões de destino dos itens para o aplicador de alterações.

  • Um provedor ou aplicativo para limpar os itens marcados como excluídos no repositório de metadados.

  • O provedor de destino para recuperar uma réplica de destino desatualizada.

Enumerando alterações

O objeto de metadados de réplica contém um método que enumera alterações quando o provedor estiver atuando como o provedor de origem. Na maioria dos casos, o método GetChangeBatch do provedor pode ser implementado passando seus parâmetros diretamente para a implementação do objeto de metadados de réplica.

Código gerenciado Para enumerar alterações feitas na réplica de origem, chame o método GetChangeBatch do objeto ReplicaMetadata.

Código não gerenciado Para enumerar alterações feitas na réplica de origem, chame o método IReplicaMetadata::GetChangeBatch.

Filtrando alterações

A sincronização filtrada é tratada pelo uso de um retorno de chamada. O método de retorno de chamada é chamado antes de um item ser acrescentado ao lote de alterações. Isso dá ao manipulador de retorno de chamada a oportunidade de examinar cada item e indicar se o item deve ser incluído no lote.

Código gerenciado Para filtrar alterações incluídas em um lote de alterações, implemente um delegado ItemFilterCallback e passe-o para GetFilteredChangeBatch.

Código não gerenciado Para filtrar alterações incluídas em um lote de alterações, implemente IChangeBatchCallback e passe-o para IReplicaMetadata::GetFilteredChangeBatch.

Obtendo versões de destino

O objeto de metadados de réplica fornece um método que ajuda um provedor de destino a implementar o método ProcessChangeBatch, obtendo as versões na réplica de destino para os itens contidos no lote de alterações do provedor de origem. Esse lote de versões de destino pode, então, ser passado para o aplicador de alterações.

Código gerenciado Para obter um lote de alterações que contenha versões aplicáveis à réplica de destino, chame o método GetLocalVersions do objeto ReplicaMetadata.

Código não gerenciado Para obter um lote de alterações que contém versões aplicáveis à réplica de destino, chame o método IReplicaMetadata::GetItemBatchVersions.

Limpando itens excluídos

Os itens excluídos da réplica são retidos no repositório de metadados com um valor que indica se o item foi excluído. Para evitar a falta de espaço de repositório na réplica, os metadados desses itens excluídos devem ser limpos periodicamente. O objeto de metadados de réplica fornece o método CleanupDeletedItems (para código gerenciado) ou IReplicaMetadata::CleanupDeletedItems (para código não gerenciado) para ajudar um provedor a limpar itens excluídos em uma programação normal. O provedor especifica um intervalo de tempo que representa a idade mínima dos itens excluídos mantidos no repositório de metadados e chama com frequência o método de limpeza, por exemplo, sempre que o provedor executa detecção de alterações. Para proteger o provedor contra dispendiosas enumerações completas, o método de limpeza só limpa os itens excluídos depois de decorrida a hora especificada, e sempre mantém os itens excluídos que não são tão antigos quanto o intervalo de tempo especificado. O método de limpeza também atualiza o conhecimento esquecido para refletir os itens excluídos que foram removidos.

Recuperando uma réplica desatualizada

Quando o Sync Framework detecta que a réplica de destino está desatualizada, o Sync Framework aciona uma enumeração completa para restaurar a réplica de destino. Uma réplica de destino fica desatualizada quando a réplica de origem remove itens excluídos de seus metadados, mas não comunica as exclusões à réplica de destino. Para executar uma enumeração completa, o Sync Framework chama o método GetFullEnumerationChangeBatch do provedor de origem e o método ProcessFullEnumerationChangeBatch do provedor de destino. O serviço de armazenamento de dados fornece métodos que ajudam os provedores a implementar esses métodos.

Código gerenciado Quando o método GetFullEnumerationChangeBatch do provedor de origem é chamado, o provedor de origem pode chamar o método GetFullEnumerationChangeBatch do objeto ReplicaMetadata. Quando o método ProcessFullEnumerationChangeBatch do provedor de destino é chamado, o provedor de destino pode obter um lote de alterações que contém versões que se aplicam à réplica de destino chamando o método GetFullEnumerationLocalVersions do objeto ReplicaMetadata.

Código não gerenciado Quando o método GetFullEnumerationChangeBatch do provedor de origem é chamado, o provedor de origem pode chamar IReplicaMetadata::GetFullEnumerationChangeBatch. Quando o método ProcessFullEnumerationChangeBatch do provedor de destino é chamado, o provedor de destino pode obter um lote de alterações que contém versões aplicáveis à réplica de destino chamando o método IReplicaMetadata::GetFullEnumerationItemBatchVersions.

Consulte também

Referência

Interface IReplicaMetadata
Interface IChangeBatchCallback
ReplicaMetadata
ItemFilterCallback

Outros recursos

Sync Framework Metadata Storage Service