Partilhar via


Arquitetura e classes para sincronização de bancos de dados

Em cenários offline e de colaboração, o Sync Framework pode ser usado em arquiteturas de duas camadas e em arquiteturas de n camadas. Em ambos os casos, ocorrem atividades durante uma sessão de sincronização: um orquestrador de sincronização se comunica com dois provedores de sincronização para recuperar e aplicar alterações em cada banco de dados. Os provedores usam um adaptador de sincronização para cada tabela com os comandos SQL específicos necessários a essa tabela. Alguns provedores expõem adaptadores para permitir que você personalize esses comandos. Outros provedores geram os adaptadores automaticamente para reduzir a complexidade da sincronização de um repositório específico.

A ilustração a seguir mostra uma arquitetura de duas camadas: todos os componentes de uma sessão de sincronização residem no computador local, e há uma conexão direta do computador local com o banco de dados no computador remoto. Durante uma sessão de sincronização, o computador local é aquele no qual a sincronização é iniciada. Se você deseja iniciar a sincronização de mais de um computador, cada um deles deve conter todos os componentes mostrados na ilustração. Esses componentes são descritos em mais detalhes após as ilustrações.

Topologia de sincronização mista de duas camadas

A ilustração a seguir mostra uma arquitetura de n camadas: são necessários componentes adicionais, como componentes no computador remoto; e a conexão com o banco de dados remoto é tratada agora por um proxy no computador local e um serviço no computador remoto. O proxy e o serviço devem ser implementados pelo desenvolvedor de aplicativos. São fornecidos exemplos para reduzir a complexidade dessa tarefa. Como ocorre com a arquitetura de duas camadas, se você deseja iniciar a sincronização de mais de um computador, cada um deles deve conter todos os componentes mostrados na ilustração.

Topologia de sincronização mista de N camadas

Bancos de dados

Os bancos de dados podem ser de qualquer versão do SQL Server 2005 SP2 ou posterior, incluindo SQL Server Compact 3.5 SP2 ou posterior (versões de 32 e 64 bits), o SQL Azure ou outros bancos de dados para os quais um provedor ADO.NET esteja disponível. O Sync Framework configura automaticamente o rastreamento de alterações e o repositório de metadados para os bancos de dados para o SQL Server e o SQL Server Compact. Para obter mais informações, consulte Como configurar e executar a sincronização de bancos de dados (SQL Server). Para bancos de dados que não são do SQL Server, você deve provisionar o banco de dados. Para obter mais informações, consulte Como provisionar um banco de dados de servidor para sincronização de colaboração (não SQL Server).

SyncOrchestrator

O orquestrador de sincronização realiza a sincronização das seguintes maneiras:

  • Determina a ordem e a direção em que devem ser aplicadas as alterações, com base em sua propriedade Direction.

  • Chama o provedor de sincronização remoto para recuperar e aplicar as alterações no banco de dados remoto.

  • Chama o provedor de sincronização local para recuperar e aplicar as alterações no banco de dados local.

O orquestrador de sincronização também mantém informações em nível de sessão para a sessão de sincronização e fornece mensagens de êxito, erros e estatísticas ao aplicativo que inicia a sincronização. Para obter mais informações, consulte SyncOrchestrator.

SyncProvider (SqlSyncProvider, SqlCeSyncProvider e DbSyncProvider)

Um provedor de sincronização se comunica com cada banco de dados e protege o orquestrador de sincronização contra a implementação específica do banco de dados. Para bancos de dados do SQL Server Compact, use SqlCeSyncProvider e para outras edições do SQL Server, inclusive SQL Azure, use SqlSyncProvider. Para outros bancos de dados, use DbSyncProvider. Todos os três provedores são herdados de RelationalSyncProvider. As principais atividades do provedor de sincronização são as seguintes:

  • Recupera alterações ocorridas no banco de dados desde a última sessão de sincronização.

  • Aplica alterações incrementais no banco de dados.

  • Detecta alterações conflitantes.

Dica

Se você estiver sincronizando dois bancos de dados do SQL Server Compact com o uso de duas instâncias do SqlCeSyncProvider, você deverá usar uma arquitetura de n camadas. Não há suporte para arquiteturas de duas camadas nesse cenário.

SyncAdapter (DbSyncAdapter e SqlCeSyncAdapter)

Modelado de acordo com o adaptador de dados no ADO.NET, o adaptador de sincronização é definido para cada tabela sincronizada. O adaptador de sincronização fornece ao provedor de sincronização os comandos SQL específicos necessários para interagir com o banco de dados.

Para os adaptadores de sincronização usados pelo SqlSyncProvider e pelo SqlCeSyncProvider, o Sync Framework gera comandos automaticamente (SqlCeSyncAdapter é privado para reduzir a complexidade de sincronização com esse repositório). Para o DbSyncAdapter, você cria o adaptador e especifica os comandos, como o InsertCommand, que aplica inserções de outro banco de dados servidor ou cliente no banco de dados servidor. Como os adaptadores de sincronização usam o objeto DbCommand do ADO.NET, você pode usar qualquer estrutura de comando que tenha suporte do ADO.NET. Isso inclui SQL embutido, procedimentos armazenados, exibições de uma tabela única, funções etc. Os comandos só exigem um único resultado que define a estrutura e os dados a serem transferidos e aplicados. Para obter mais informações, consulte DbSyncAdapter. Para obter mais informações sobre comandos, consulte "Adaptador de sincronização", em Como configurar e executar a sincronização de colaboração (não SQL Server).

Classes adicionais na API

As ilustrações deste tópico mostram as classes principais na API. No entanto, há várias classes que não são mostradas. Para obter informações sobre todas as classes disponíveis, consulte Microsoft.Synchronization, Microsoft.Synchronization.Data, Microsoft.Synchronization.Data.SqlServer e Microsoft.Synchronization.Data.SqlServerCe. As seções a seguir fornecem introduções a outras classes importantes com as quais você deve se familiarizar.

DbSyncScope

Um escopo de sincronização é um agrupamento lógico de objetos que devem ser sincronizados como uma unidade. No caso da sincronização de banco de dados, um escopo é normalmente um conjunto de tabelas, e tabelas podem ser filtradas. As tabelas podem ser incluídas em um ou mais escopos. Para obter mais informações, consulte "Definir escopos a serem sincronizados", em Como provisionar um banco de dados de servidor para sincronização de colaboração (não SQL Server).

Objetos de provisionamento de banco de dados

Para os bancos de dados SQL Server, e SQL Server Compact, Sync Framework fornece um conjunto de classes usadas para descrever escopos e as tabelas incluídas em cada escopo. Depois que as tabelas e os escopos forem descritos, use objetos do Sync Framework para aplicar scripts de provisionamento a cada nó. Os scripts criam uma infraestrutura de controle e aplicação de alterações que consiste em tabelas de metadados, gatilhos e procedimentos armazenados. A tabela a seguir lista as classes usadas para configurar bancos de dados e provedores. Para obter mais informações, consulte Como configurar e executar a sincronização de bancos de dados (SQL Server).

SQL Server e SQL Azure

SQL Server Compact

Descrição

DbSyncScopeDescription

DbSyncScopeDescription

Representa um escopo de sincronização, que é um agrupamento lógico de tabelas (opcionalmente filtradas) sincronizadas como uma unidade.

SqlSyncScopeProvisioning

SqlCeSyncScopeProvisioning

Representa o provisionamento de um banco de dados do SQL Server, SQL Azure ou SQL Server Compact para um escopo específico representado por um objeto DbSyncScopeDescription.

SqlSyncProviderScopeConfiguration

SqlCeSyncProviderScopeConfiguration

Representa informações de configuração que são usadas pelo SqlSyncProvider ou pelo SqlCeSyncProvider para um escopo específico.

DbSyncTableDescription

DbSyncTableDescription

Representa o esquema de uma tabela incluída em um escopo de sincronização.

DbSyncColumnDescription

DbSyncColumnDescription

Representa o esquema de uma coluna que faz parte de uma tabela incluída em um escopo de sincronização.

SqlSyncDescriptionBuilder

SqlCeSyncDescriptionBuilder

Representa o escopo e as informações de tabela de um banco de dados do SQL Server, SQL Azure ou SQL Server Compact que esteja envolvido na sincronização.

SqlSyncTableProvisioning

SqlSyncTableProvisioning

Representa o provisionamento de um banco de dados do SQL Server, SQL Azure ou SQL Server Compact que é representado por um objeto DbSyncTableDescription.

SqlSyncProviderAdapterConfiguration

SqlSyncProviderAdapterConfiguration

Representa as informações de configuração do adaptador de sincronização para uma tabela em um banco de dados SQL Server, SQL Azure ou SQL Server Compact.

SyncOperationStatistics

As estatísticas de sessão são um conjunto de estatísticas que o orquestrador de sincronização fornece para cada sessão de sincronização. As estatísticas incluem informações sobre os tempos de sincronização, o número de alterações processadas e quaisquer conflitos ou exceções ocorridas. Para obter mais informações, consulte SyncOperationStatistics.

DbSyncSession

O objeto DbSyncSession fornece acesso a variáveis da sessão de sincronização. As variáveis de sessão são fornecidas para um desenvolvedor usar como parâmetros para os comandos de seleção, inserção, atualização e exclusão executados nos servidores que usam o DbSyncProvider e o DbSyncAdapter. Para obter mais informações, consulte Como usar variáveis de sessão para a sincronização de colaboração (não SQL Server).

DLLs do Sync Framework

As classes de sincronização de banco de dados do Sync Framework estão contidas nas seguintes DLLs:

Todas as DLLs dependem do System.dll e do System.Data.dll do .NET Framework 2.0 ou de versões posteriores.

Consulte também

Outros recursos

Cenários de sincronização de banco de dados

Como configurar e executar a sincronização de bancos de dados (SQL Server)

Sincronizando outros bancos de dados compatíveis com ADO.NET