Tecnologias
.Net Framework 3.5, Windows Forms, .Sync
Sumário
Veja como criar um projeto de sincronização de dados entre o
SQL Server 2005 no servidor e um banco de dados local na máquina do cliente,
podendo ser um desktop, um telefone celular, um Pocket PC.
Introdução
Sincronizar dados entre diferentes fontes sempre foi um
problema para qualquer tipo de aplicação, seja uma simples transferência de
fotos da máquina digital para o desktop ou ainda de um pen-drive para o
servidor. Eu estou falando de aplicações, não de abrir o Windows Explorer e
copiar e colar os arquivos. Já no mundo real e corporativo, o que mais tenho
visto são aplicações de transferências de dados entre base de dados. Algumas
aplicações onde é preciso e condicional o uso de Aplicações Ocasionalmente
Desconectadas – OCD – torna-se obrigatório adotar uma arquitetura que permita
trabalhar desconectado do servidor. E, quando a conexão for restabelecida, a
sincronização é efetuada. Este é o cenário e o foco deste artigo.
Cenário
Um exemplo bem clássico do uso de aplicações desconectadas
que precisam ser sincronizadas com o servidor é de força de vendas, onde os
vendedores anotam os pedidos dos clientes em um dispositivo móvel, normalmente
um smartphone, onde contém uma forma de armazenamento local, seja um banco de
dados, um arquivo XML ou TXT. Quando o mesmo tiver uma conexão com a rede, é
disparada a sincronização.
Exatamente neste ponto, a sincronização, é que vou abordar
como está absurdamente simples de se fazer com o Visual Studio .NET 2008 com o
Service Pack 1 (SP1). Note que é obrigatório o uso do SP1 porque o template de
SYNC só está disponível nele.
Responda esta pergunta: Você já teve que fazer um programa
para sincronizar dados entre um dispositivo móvel ou uma aplicação desktop com
o servidor? Se não, então nunca passou por este trauma. Se sim, sabe muito bem
o que estou falando, pois quando falamos que a sincronização é simples, basta
copiar e colar os dados da origem para o destino, isto não é verdade. O
processo envolve uma série de implicações, por exemplo, consultar se o item
existe, qual a regra de negócio a ser aplicada, se o item já foi atualizado,
enfim, nada que algumas linhas de programação não resolvam.
Sincronização no VS.NET 2008 SP1
Até parece piada, mas o slogan “seus problemas acabaram”
parece ter se tornado realidade. Vocês verão que a quantidade de código a ser
criada são praticamente duas linhas, isto mesmo, duas linhas de código para
disparar o processo de sincronização. Isto porque obviamente é o framework que
fará o trabalho pesado nos bastidores. Então, vamos colocar a mão na massa e
criar uma aplicação WinForms que irá criar um banco de dados localmente e
quando quisermos sincronizar com o servidor, terá um botão para disparar o
código.
Projeto
Abra o Visual Studio .Net 2008 com SP1, e crie um novo
projeto do tipo Windows Forms Application chamado SincronizaMSDN na pasta
C:\Projetos (ver Figura 1). A linguagem que vou utilizar é o C# mas fique à
vontade para usar o VB.NET, é só mudar a sintaxe.

Figura 1 – Novo Projeto
Com o projeto criado, é exibido o Form1, deixe-o aí, não
vamos mexer nele por enquanto. No Solution Explorer, dê um clique com o botão
direito e selecione Add New Item. Na janela aberta (ver Figura 2), selecione a
categoria Data (Dados), em Templates use Local Database Cache e no nome do
arquivo digite BancoLocal.sync. Observe que a extensão do arquivo é SYNC
(syncronization), ou seja, aqui é o grande pulo do gato que o framework vai se
encarregar de montar a estrutura de sincronização.

Figura 2 – Adicionar Local Database Cache
Clique no botão Add para adicionar o arquivo. Em seguida é
aberta uma janela para configurar os dados, conforme a Figura 3.

Figura 3 – Configuração
Aqui você tem várias opções para selecionar o servidor.
Clique no botão New e aponte para o respectivo servidor, conforme Figura 4. No
meu caso usei o SQL Server local e o banco de dados Northwind. Caso queira
trocar o Provider clique no botão Change.

Figura 4 – Servidor a ser usado
Uma vez definida a conexão, clique no botão OK. Note na
Figura 5 que automaticamente a janela Configure Data Synchronization preenche
os campos Server Connection com a origem do banco de dados no servidor e o
Client Connection que será o banco de dados local. Neste ponto é importante
destacar que a extensão do arquivo é SDF. Portanto, esta extensão refere-se ao
SQL Compact Edition (o antigo SQL Server CE - http://www.microsoft.com/Sqlserver/2005/en/us/compact-downloads.aspx
), que é gratuito e, acredite sim, pode e deve ser usado para qualquer
finalidade de armazenamento de dados. Quero dizer que o SQL Compact Edition
está fantástico, você pode usá-lo tanto em desktop, num servidor, num
smartphone, num Pocket PC, onde quiser.

Figura 5 – Configuração do Server e do Client