Selecionando os componentes apropriados do Sync Framework
Este tópico descreve quais componentes devem ser usados para cenários de sincronização comuns e descreve a arquitetura de alto nível do Sync Framework.
Componentes do Sync Framework
O Sync Framework inclui um tempo de execução, um conjunto de provedores de sincronização para repositórios de dados específicos e uma API para escrever provedores. Um provedor é um componente de software que se comunica entre uma fonte de dados e outros componentes do sistema de sincronização. Se você sincronizar um repositório de dados para o qual é fornecido um provedor, é altamente recomendável usar esse provedor. Os provedores oferecem extensibilidade para que possam ser ajustados ao seu aplicativo. Se você sincronizar um repositório de dados para o qual nós não fornecemos um provedor ou se exigir uma implementação diferente, um provedor personalizado será apropriado.
A ilustração a seguir mostra as relações entre todos os componentes fornecidos pelo Sync Framework.
Os componentes da ilustração são os seguintes:
Provedores de sincronização de banco de dados (chamados Sync Services for ADO.NET em versões anteriores). Esses provedores fazem parte da Microsoft.Synchronization.dll, Microsoft.Synchronization.Data.dll, Microsoft.Synchronization.Data.Server.dll, Microsoft.Synchronization.Data.SqlServer.dll e Microsoft.Synchronization.Data.SqlServerCe.dll. Eles podem ser usados para sincronizar bancos de dados para os seguintes tipos de cenários:
Cenários de colaboração. Por exemplo, em um aplicativo que permite que os usuários compartilhem notas de projeto, os membros da equipe do projeto frequentemente precisam de uma cópia local dos dados com a qual possam trabalhar. Depois de fazer alterações, eles podem sincronizar com outro membro da equipe para trocar as alterações e também podem sincronizar as alterações com um servidor central.
Cenários offline. Por exemplo, um vendedor precisa acessar dados de produtos no escritório de um cliente, além de carregar os pedidos. O vendedor poderia sincronizar com o servidor central todas as manhãs para assegurar que tenha os produtos e preços mais recentes, e sincronizar à noite para carregar os pedidos do dia.
Para obter mais informações, consulte Sincronizando bancos de dados. Originalmente, os provedores offline faziam parte do Synchronization Services for ADO.NET 1.0, que foi lançado antes do Sync Framework 1.0. Os provedores de colaboração são criados sobre a API de núcleo e o tempo de execução, diferentemente dos provedores offline. Os provedores offline não podem participar de topologias com outros tipos de provedores do Sync Framework.
Provedor de sincronização de arquivos (chamado Sync Services for File Systems em versões anteriores). Esse provedor faz parte da FileSyncProvider2.dll e da Microsoft.Synchronization.Files.dll. Ele pode ser usado para sincronizar arquivos e pastas em sistemas de arquivos NTFS, FAT ou SMB. Os diretórios para sincronização podem ser locais ou remotos e não precisam estar no mesmo sistema de arquivos. Um aplicativo pode usar filtros estáticos para excluir ou incluir arquivos, listando-os explicitamente ou usando caracteres curinga (como *.txt). Ou o aplicativo pode definir filtros que excluem subpastas inteiras. Um aplicativo também pode se registrar para ser notificado sobre o andamento da sincronização de arquivos. Para obter mais informações, consulte Sincronizando arquivos.
Componentes de sincronização de Web feed (chamados Sync Services for FeedSync em versões anteriores). Esses componentes fazem parte da FeedSync2.dll e da Microsoft.Synchronization.dll. Os componentes podem ser usados de duas maneiras:
Os serviços do provedor de sincronização de Web feed podem ser usados para escrever um provedor que represente um arquivo XML do FeedSync como sua réplica. Para obter mais informações sobre o FeedSync, consulte o site do FeedSync.
Os componentes do produtor e consumidor de Web feed podem ser usados para sincronizar os dados de outro tipo de réplica (como um sistema de arquivos) com um RSS ou Atom feed.
Para obter mais informações, consulte Sincronizando Web feeds.
Provedores personalizados. Esses componentes fazem parte da Synchronization2.dll e da Microsoft.Synchronization.dll; e da SimpleProviders2.dll e da Microsoft.Synchronization.SimpleProviders.dll. Eles podem ser usados para criar provedores de sincronização para qualquer tipo de repositório de dados. Por exemplo, se um aplicativo incluir um sistema de armazenamento personalizado para acompanhamento de contatos de clientes, você poderá usar um provedor simples ou um provedor personalizado completo para integrar esses dados em seus aplicativos. Para obter mais informações, consulte Sincronizando repositórios de dados usando provedores personalizados.
Serviço de armazenamento de metadados. Esse componente faz parte da MetaStore2.dll e da Microsoft.Synchronization.MetadataStorage.dll. Ele pode ser usado por provedores personalizados como uma forma conveniente de armazenar e processar metadados de sincronização, especialmente para réplicas que não podem armazenar metadados de outra maneira. O serviço de armazenamento de metadados usa um banco de dados leve e confiável com superfície de disco e memória pequenas, e que pode ser redistribuído juntamente com o provedor. A API separa claramente o repositório de metadados das interfaces e dos métodos usados para acessar o repositório, de forma que repositórios alternativos podem ser implementados e usados com alterações mínimas no provedor. Para obter mais informações, consulte Sync Framework Metadata Storage Service.
API de núcleo e tempo de execução. Esses componentes fazem parte da Synchronization2.dll e da Microsoft.Synchronization.dll. A API de núcleo e o tempo de execução são usados por todos os outros componentes, exceto os provedores de banco de dados offline. Para obter mais informações sobre esses componentes, consulte Sincronizando repositórios de dados usando provedores personalizados.
Para obter informações sobre a instalação de componentes, consulte Instalação, redistribuição e compatibilidade de versão.
O Sync Framework fornece um conjunto abrangente de componentes para habilitar a sincronização de um grande variedade de aplicativos. Este tópico forneceu uma introdução básica de cada componente para ajudá-lo a decidir quais componentes são apropriados para seus aplicativos. Para aplicativos que envolvem mais de um tipo de repositório de dados, a próxima etapa é ler Integrando dados de provedores diferentes.
Arquitetura do Sync Framework
O Sync Framework usa uma arquitetura baseada em provedor. Os provedores protegem outros componentes de sincronização das complexidades e da implementação específica de cada repositório de dados. Esta arquitetura, juntamente com o uso de metadados de sincronização especializados, permite ao Sync Framework sincronizar qualquer tipo de repositório de dados para o qual um provedor é escrito. O Sync Framework inclui provedores para repositórios de dados comuns, como bancos de dados e o sistema de arquivos NTFS, e permite que você escreva provedores para outros tipos de repositórios. O provedor é o principal ponto de integração no Sync Framework.
A ilustração a seguir mostra a arquitetura de alto nível do Sync Framework. A sincronização sempre ocorre entre duas réplicas (ou nós), como mostrado na ilustração, mas as comunidades de sincronização (ou topologias) podem ter qualquer forma, como hub-e-spoke, ponto a ponto, etc. Com algumas exceções, cada par de participantes pode sincronizar sobre uma arquitetura de 2 camadas ou uma arquitetura de n camadas, conforme os requisitos do aplicativo. A documentação de cada componente do Sync Framework fornece informações mais detalhadas sobre as arquiteturas apropriadas, além de considerações sobre segurança.
Os elementos da ilustração são de três tipos:
Elementos escritos pelo desenvolvedor.
O aplicativo chama métodos de sincronização, responde a eventos e trata de outras tarefas de acordo com os requisitos do aplicativo.
O repositório de dados poderia ser um sistema de arquivos, um banco de dados relacional, um repositório de contatos de arquivo simples ou qualquer outro repositório de dados que precise ser sincronizado.
O protocolo de transferência de dados determina como as alterações de dados são transmitidas entre dois provedores.
Elementos fornecidos pelo Sync Framework.
Dependendo de o código em uso ser nativo ou gerenciado, o aplicativo se comunica com uma sessão de sincronização ou um orquestrador de sincronização, que se comunica então com cada provedor de sincronização.
O tempo de execução de sincronização direciona o processo de sincronização e comunica o status, conflitos e erros ao aplicativo cliente.
Elementos escritos pelo desenvolvedor ou fornecidos pelo Sync Framework, dependendo do cenário.
O provedor é específico do tipo de dados que estão sendo sincronizados. Em algumas situações, um aplicativo exige um provedor personalizado que deve ser escrito pelo desenvolvedor. O Sync Framework fornece várias APIs para tornar este processo mais direto, além de vários componentes que ajudam com as partes mais difíceis da sincronização, como a detecção de conflitos.
O repositório de metadados contém os metadados usados pelo Sync Framework para determinar as alterações que cada provedor deve selecionar e aplicar ao repositório de dados que atende. A forma como os metadados são armazenados e trabalhados depende do provedor usado. Por exemplo, normalmente, os provedores para bancos de dados armazenam metadados em tabelas de controle no mesmo banco de dados que o repositório de dados. Para provedores personalizados, você pode criar um repositório de metadados ou usar um serviço fornecido com o Sync Framework. A documentação de cada componente do Sync Framework fornece informações mais detalhadas sobre metadados.
Consulte também
Conceitos
Microsoft Sync Framework
Benefícios de uso do Sync Framework