Microsoft Sync Framework

O Microsoft Estrutura de sincronização é uma plataforma de sincronização abrangente que permite a colaboração e o acesso offline para aplicativos, serviços e dispositivos. Ele conta com tecnologias e ferramentas que permitem a mobilidade, o compartilhamento e a captura de dados offline. Com o Estrutura de sincronização, os desenvolvedores podem criar ecossistemas sincronizados que se integram em qualquer aplicativo com qualquer dado de qualquer armazenamento que use qualquer protocolo em qualquer rede.

O Estrutura de sincronização consiste nas seguintes tecnologias; as primeiras três delas podem ser instaladas com o SQL Server 2008:

  • O Serviços de sincronização para ADO.NET pode ser usado para sincronizar bancos de dados para cenários offline e de colaboração.

  • Os elementos centrais do Estrutura de sincronização podem ser usados por Serviços de sincronização para ADO.NET para sincronizar bancos de dados e também podem ser usados para criar provedores de sincronização para outros tipos de armazenamentos de dados.

  • O Sync Services for FeedSync pode ser usado para sincronizar feeds RSS e Atom com dados em um armazenamento local.

  • O Sync Services for File Systems pode ser usado para sincronizar arquivos e pastas em um sistema de arquivos.

  • O serviço de armazenamento de metadados pode ser usado para armazenar metadados de sincronização no SQL Server Compact 3.5.

O restante deste tópico fornece uma visão geral de Serviços de sincronização para ADO.NET e inclui uma comparação com outras tecnologias da Microsoft. Para obter a documentação completa de Serviços de sincronização para ADO.NET e de Estrutura de sincronização, consulte o Microsoft Sync Framework Developer Center.

Instalando o Microsoft Sync Framework e o Sync Services for ADO.NET

O Estrutura de sincronização pode ser instalado com o Assistente de Instalação do SQL Server 2008 ou com opções de instalação de linha de comando. Para instalar o Estrutura de sincronização usando o assistente, na página Seleção de Recursos, selecione Microsoft Sync Framework. Para obter mais informações sobre como instalar o SQL Server e os componentes relacionados, consulte Visão geral da instalação do SQL Server.

Visão geral e cenários de sincronização

A possibilidade de dar suporte aos trabalhadores móveis e remotos está ficando cada vez mais importante para as organizações todos os dias. As organizações devem assegurar que os trabalhadores tenham acesso às mesmas informações que consultam quando estão no escritório. Na maioria dos casos, esses usuários têm um laptop, um computador no escritório, um smartphone ou um PDA. Nesses dispositivos, os usuários geralmente podem acessar seus dados diretamente usando uma conexão VPN ou algum outro método de conexão direta com a rede corporativa. Para a maioria dos usuários remotos, esta solução não é satisfatória devido às grandes desvantagens nas seguintes áreas:

  • Requisitos de rede

    Para que os usuários possam acessar as informações, o dispositivo remoto deve ter uma conexão constante com a rede corporativa durante o acesso aos dados. Para alguns trabalhadores, como os que trabalham em casa, isso talvez não seja um problema. Para outros, como vendedores que estão constantemente em movimento, isso poderia ser mais difícil. Por exemplo, se um vendedor está visitando um cliente e não pode acessar os dados do inventário porque não há conectividade de rede, seu trabalho não seria eficiente.

  • Velocidade de acesso aos dados

    Em um ambiente típico de cliente/servidor corporativo, os usuários têm redes de alta velocidade que permitem o acesso rápido a informações. Porém, os trabalhadores remotos normalmente se conectam em redes com ou sem fio lentas e não confiáveis. Com uma solução típica, cada parte dos dados que o usuário deseja acessar deve ser baixada sempre que solicitada porque não é possível persistir os dados no dispositivo. Por exemplo, se um vendedor precisar baixar sua lista de produtos toda vez que abrir o aplicativo, o intervalo de tempo necessário para preencher o aplicativo com as informações poderia ser frustrante.

  • Ponto de falha único

    Com este tipo de solução, todos os usuários dependem de um único servidor. Se esse banco de dados não estiver disponível devido a um período de inatividade planejado ou a falhas do servidor, todos os trabalhadores remotos não poderão acessar seus dados.

  • Escalabilidade de servidor

    À medida que mais pessoas trabalham remotamente, o desempenho dos servidores corporativos é afetado e maior é a necessidade de adição de hardwares.

Aplicativos ocasionalmente conectados

Uma alternativa para a solução descrita na seção anterior é a implementação de um aplicativo ocasionalmente conectado. Um aplicativo ocasionalmente conectado permite que um trabalhador remoto continue acessando os dados. No entanto, diferente do cenário anterior no qual o usuário precisava acessar diretamente o banco de dados corporativo para obter as informações desejadas, nesse caso as informações são armazenadas localmente em um dispositivo. Para preencher um banco de dados local, um aplicativo ocasionalmente conectado em geral usa a sincronização de dados.

A sincronização de dados consiste na capacidade de obter periodicamente as informações que estão armazenadas em um banco de dados cliente (como o SQL Server Compact 3.5) e em sincronizar as alterações com um banco de dados de servidor (como o SQL Server). Com uma solução baseada em sincronização, o usuário não precisa mais ter uma conexão de rede constante para acessar as informações. Como os dados são armazenados localmente, o usuário tem acesso constante aos dados enquanto o processamento é descarregado a partir do banco de dados central. Além disso, visto que a velocidade da rede não é mais um fator de restrição, o usuário agora pode acessar os dados na velocidade do dispositivo.

Sync Services for ADO.NET

O Serviços de sincronização para ADO.NET permite a sincronização entre bancos de dados. Ele fornece uma API intuitiva e flexível que permite criar aplicativos voltados para cenários offline e de colaboração. O Serviços de sincronização para ADO.NET permite a sincronização entre dois pontos, como os bancos de dados do SQL Server, ou entre um banco de dados cliente do SQL Server Compact 3.5 e qualquer banco de dados de servidor para o qual um provedor ADO.NET esteja disponível. A API permite usar todos ou somente alguns componentes fornecidos, dependendo da arquitetura e dos requisitos do aplicativo.

As ilustrações a seguir mostram exemplos de aplicativos ocasionalmente conectados nos quais os dados (representados por um banco de dados verde) são persistidos localmente no dispositivo de um trabalhador remoto. O primeiro exemplo mostra um sistema de banco de dados autônomo no qual as informações são armazenadas diretamente no dispositivo do usuário. O segundo exemplo mostra um escritório remoto onde as informações são armazenadas no banco de dados de um grupo de trabalho desse escritório, de modo que vários trabalhadores locais podem acessar os dados.

Cenário offline de serviços de sincronização

Uma extensão comum deste tipo de aplicativo ocasionalmente conectado é a possibilidade de dar suporte a cenários de colaboração. São cenários nos quais dois bancos de dados podem ser sincronizados ponto a ponto, sem ter que passar por um local central. Como mostrado na ilustração seguir, um banco de dados remoto pode trocar informações livremente com qualquer outro banco de dados. Esse tipo de solução é útil quando trabalhadores remotos (como auditores financeiros locais) trabalham em equipe em um local remoto. Esses trabalhadores normalmente devem compartilhar informações entre si. No entanto, como eles não se conectam ao banco de dados central, deve compartilhar informações através de algum tipo de rede ponto a ponto.

Cenário de colaboração de serviços de sincronização

Usando o Sync Services for ADO.NET com o SQL Server

O Serviços de sincronização para ADO.NET dá suporte a bancos de dados dos seguintes modos:

  • Em cenários offline, o banco de dados cliente deve ser o SQL Server Compact 3.5 versão 3.5 ou posterior. O servidor pode ser qualquer banco de dados para o qual um provedor ADO.NET está disponível.

  • Em cenários de colaboração, cada banco de dados de mesmo nível deve ser o SQL Server 2000 Service Pack 4 ou posterior.

O SQL Server é um banco de dados empresarial que fornece uma base sólida para aplicativos que requerem sincronização. O SQL Server 2008 oferece o controle de alterações, um dos recursos mais úteis para os desenvolvedores de sincronização. O Serviços de sincronização para ADO.NET fornece uma API para sincronizar alterações, mas não controla alterações no banco de dados de servidor ou de mesmo nível. ((O SQL Server Compact 3.5 controla alterações no banco de dados cliente.) Você pode criar um sistema de controle de alterações personalizado, mas geralmente esse procedimento apresenta uma complexidade significativa e sobrecarga de desempenho. Recomendamos usar o controle de alterações do SQL Server 2008, pois sua configuração é fácil e ele oferece controle de alto desempenho. Para obter mais informações, consulte Controlando alterações de dados.

Comparando o Sync Services for ADO.NET com outras tecnologias

A Microsoft oferece várias tecnologias que são desenvolvidas para aplicativos que executam sincronização. Desse modo, é útil para comparar o Serviços de sincronização para ADO.NET com outras tecnologias que são usadas em cenários offline e de colaboração.

Sincronização offline

As tecnologias Microsoft mais significantes para sincronização offline são as seguintes:

  • RDA. Essa tecnologia é usada para sincronizar um banco de dados do SQL Server Compact 3.5 com um banco de dados de outra edição do SQL Server. Para obter mais informações, consulte os Manuais Online do SQL Server Compact 3.5.

  • Replicação de mesclagem. Usada para sincronizar edições diferentes do SQL Server, incluindo o SQL Server Compact 3.5. Para obter mais informações, consulte Visão geral da replicação de mesclagem. e Seleção do tipo apropriado de replicação.

Use a tabela a seguir como uma ajuda para determinar qual tecnologia é adequada para os aplicativos que você deseja criar.

Recurso principal

RDA

Replicação de mesclagem

Serviços de sincronização

Sincronize usando uma arquitetura de n camadas ou voltada ao serviço

Não

Não

Sim

Dá suporte a bancos de dados heterogêneos

Não

Não

Sim

Controle de alterações incremental

Não1

Sim

Sim

Detecção e resolução de conflito

Não

Sim2

Sim

Crie exibições de dados no cliente com facilidade

Não

Não

Sim

Inicialize esquema e dados automaticamente

Sim

Sim

Sim

Dá suporte a conjuntos de dados grandes

Sim

Sim

Sim

O processador de consulta está disponível localmente

Sim

Sim

Sim

Propague alterações de esquema automaticamente

Não

Sim

Não

Repartição automática de dados

Não

Sim

Não

Use em dispositivos

Sim

Sim

Sim

1 O RDA dá suporte a carregamentos incrementais, mas os downloads são sempre um instantâneo que atualiza todos os dados no cliente.

2 A replicação de mesclagem fornece uma resolução de conflito interna, enquanto o Serviços de sincronização para ADO.NET fornece uma estrutura para criar um esquema da resolução de conflito.

Sincronização de colaboração

A tecnologia mais significativa a ser comparada em termos de sincronização de colaboração é a replicação ponto a ponto transacional, que é usada para sincronizar dois ou mais bancos de dados do SQL Server Enterprise. O Serviços de sincronização para ADO.NET e a replicação transacional dão suporte à sincronização ponto a ponto: a replicação transacional é mais adequada para manter a alta disponibilidade e o dimensionamento da atividade de leitura em vários servidores, enquanto o Serviços de sincronização para ADO.NET é mais adequado para aplicativos nos quais os usuários trabalham com os mesmos dados em um esquema de colaboração.

A tabela a seguir pode ajudá-lo a determinar qual tecnologia é adequada para os aplicativos que você deseja criar. Para obter mais informações sobre a replicação ponto a ponto transacional, consulte Replicação de transação ponto a ponto.

Recurso principal

Replicação ponto a ponto transacional

Serviços de sincronização

Sincronize usando uma arquitetura de n camadas ou voltada ao serviço

Não

Sim

Dá suporte a bancos de dados heterogêneos

Não

Sim

Controle de alterações incremental1

Sim

Sim

Detecção e resolução de conflito2

Sim

Sim

Inicialize esquema e dados automaticamente

Sim

Sim

Dá suporte a conjuntos de dados grandes

Sim

Sim

O processador de consulta está disponível localmente

Sim

Sim

Propague alterações de esquema automaticamente

Sim

Não

Use em dispositivos

Não

Não nesta versão

Use com o SQL Server Compact 3.5

Não

Não nesta versão

1 O Serviços de sincronização para ADO.NET usa o controle de alterações líquido no qual a última versão de uma linha é sincronizada. Com a replicação ponto a ponto transacional, todas as alterações feitas em uma linha são aplicadas em ordem em cada ponto.

2 A replicação fornece uma resolução de conflito interna, enquanto o Serviços de sincronização para ADO.NET fornece uma estrutura para criar um esquema da resolução de conflito.

Decidindo qual tecnologia deve ser usada

O Serviços de sincronização para ADO.NET fornece a flexibilidade de um modelo de programação como os conjuntos de dados offline e um recurso de sincronização mais avançado como o disponível na replicação. A funcionalidade do Serviços de sincronização para ADO.NET é superior ao RDA. A replicação deve ser usada por administradores de banco de dados e foi desenvolvida principalmente para sincronizar os bancos de dados do SQL Server. A replicação fornece uma funcionalidade significativa, disponibilizando a configuração em assistentes, procedimentos armazenados e em sua própria API. O Serviços de sincronização para ADO.NET foi projetado para desenvolvedores e dá suporte a bancos de dados heterogêneos e a serviços de sincronização, como o Windows Communication Foundation (WCF). Se um aplicativo envolve a sincronização com bancos de dados que não são do SQL Server ou se um aplicativo precisar de componentes separados para ativar a sincronização em transportes ou serviços diferentes, use o Serviços de sincronização para ADO.NET.

Para alguns aplicativos, a decisão sobre qual tecnologia deve ser usada é fácil: se você precisar sincronizar uma fonte de dados que não seja um banco de dados do SQL Server, o Serviços de sincronização para ADO.NET é a solução. Se você for um administrador de banco de dados que deseja configurar a sincronização sem muita programação, a replicação pode ser uma melhor opção. Por fim, você deve avaliar com atenção os requisitos de aplicativo e determinar se a API do Serviços de sincronização para ADO.NET é a tecnologia adequada para ser usada. Se desejar mover um esquema e seus dados além da replicação de um banco de dados para outro, recomendamos o Serviços de sincronização para ADO.NET.

Consulte também

Conceitos