Programando tarefas comuns de sincronização do cliente e do servidor
Dica
As informações a seguir foram incluídas como referência para aplicativos existentes que dão suporte apenas a cenários offline. Para desenvolver novos aplicativos, consulte Arquitetura e classes para sincronização de bancos de dados.
Os tópicos a seguir desta seção fornecem informações básicas, conteúdo de procedimentos e exemplos de código completos para tarefas de sincronização comuns do cliente e do servidor que podem ser executadas com o Sync Framework. Recomendamos que você leia primeiro o tópico de instruções sobre o controle de alterações no banco de dados do servidor e, em seguida, leia pelo menos um dos tópicos a respeito da direção da sincronização antes de ler os demais.
Nesta seção
Como especificar sincronização de instantâneo, de download, de carregamento e bidirecional
Como inicializar o banco de dados cliente e trabalhar com esquemas de tabela
Como trabalhar com eventos e com a lógica de negócios do programa
Exemplo de aplicativos nos tópicos de instruções
Cada tópico de instrução contém pelo menos um aplicativo de console. Esse aplicativo é escrito nas linguagens C# e Visual Basic e demonstra recursos específicos da API. Todos os aplicativos incluem o código para sincronizar uma vez, alteram o cliente e o servidor, conforme adequado, e, em seguida, sincronizam novamente. Embora seja mais rápido mostrar apenas exemplos de código para uma tarefa ou um recurso específico, é muito mais fácil entender como o Sync Framework funciona se você vir um recurso específico em um contexto completo.
Cada aplicativo contém as seguintes classes, além de outras relevantes para os recursos que estão sendo descritos:
Program Esta classe configura a sincronização e chama métodos da classe Utility. A classe Utility controla toda a funcionalidade não relacionada diretamente à sincronização, como a retenção de informações da cadeia de conexão e as alterações nos bancos de dados do servidor e cliente.
SampleSyncAgent Esta classe é derivada de SyncAgent.
SampleServerSyncProvider Esta classe é derivada de DbServerSyncProvider. Nos exemplos nos quais os comandos do provedor do servidor são relevantes, os comandos são especificados manualmente. Em outros casos, é usada a classe SqlSyncAdapterBuilder porque ela requer menos código. Para obter mais informações sobre os comandos do provedor do servidor, consulte Como especificar sincronização de instantâneo, de download, de carregamento e bidirecional.
SampleClientSyncProvider Esta classe é derivada de SqlCeClientSyncProvider.
Todos os aplicativos completos são de duas camadas para evitar o uso de um serviço para executar os aplicativos. No entanto, o código é dividido em classes separadas para que seja mais fácil ver como aplicar o código a cenários de N camadas. Para obter mais informações sobre aplicativos de N camadas, consulte Como configurar a sincronização de n camadas.
O código de todos os aplicativos foi testado no Visual Studio 2008, SQL Server Compact Service Pack 1, SQL Server 2005 Service Pack 2 e SQL Server 2008.
Para executar cada aplicativo
Execute o script "Controle de alterações personalizado para cenários offline" Transact-SQL em Scripts de instalação para tópicos de instruções do provedor de banco de dados. Este script cria um banco de dados, um conjunto de tabelas e gatilhos e um conjunto de procedimentos armazenados. Para excluir e reinserir dados de exemplo, use o procedimento armazenado usp_InsertSampleData.
Copie o código da classe Utility de Classe de utilitário para tópicos de instruções do provedor de banco de dados. Cole este código em cada aplicativo que deseja executar ou crie uma DLL a partir do código e faça referência àquela DLL a partir de cada aplicativo.
Adicione referências às seguintes DLLs:
Microsoft.Synchronization.dll
Microsoft.Synchronization.Data.dll
Microsoft.Synchronization.Data.Server.dll
Microsoft.Synchronization.Data.SqlServerCe.dll
System.Data.SqlServerCe.dll