Sincronização de Dados - Aplicação WEB com Desktop

Galera to com uma duvida agora…

Tenho um sistema WEB para emissão de pedidos para representantes, o problema é que alguns lugares não tem conexão com a internet, impossibilitando o representante a fazer o pedido na hora. Então resolvi fazer um sistema Offline, desktop.

A idéia é simples, o representante faz o pedido no sistema desktop, e quando tiver conexão ele envia isso via webService… Porém, me surgiu uma dúvida na sincronização dos dados. Ex: no sistema web, foi alterado o endereço do cliente X, logo, o sistema Desktop deverá receber essa informação. Aí que eu não sei como fazer… me surgiram 2 idéias:

1 - A cada alteração no sistema web é gerado um log com numero de revisão (mesmo estilo que subversion), e aí fazer o controle em cima desse numero.
Ex: sistema desktop esta atualizado até a revisao 104… aí ele busca tudo com id maior que 104 para atualizar…

2 - Verificação de todas as tabelas - Ao iniciar a sincronia de dados, o sistema olha registro por registro em busca de alterações… (inviável, pois, demoraria muito tempo)…

Alguém ja fez algo parecido? Ou tem ideia melhor?

vlw

Eu usaria Java Message Service (JMS).

Você teria uma alteração qualquer no sistema web. Em cada alteração, você gera uma mensagem e envia para um Tópico, ou uma Fila, dependendo o numero de consumidores.

Quando a aplicação desktop conectar a internet, ela faz também uma conexão a sua fila ou tópico, assim as mensagens são recebidas e a base local é atualizada.

hum… dei uma pesquisada e achei bem interessante…

tu nao teria um exemplo aí talvez?

vlw

[quote=DeGuedes]hum… dei uma pesquisada e achei bem interessante…

tu nao teria um exemplo aí talvez?

vlw[/quote]

Da uma procurada no google que você vai encontrar bastante material sobre o assunto.

Um bom livro: O?REILLY, Java Message Service, Second Edition by Mark Richards, Richard Monson-Haefel, and David A. Chappell.
Pagina da API na Oracle: http://www.oracle.com/technetwork/java/jms/index.html

Só tome cuidado com relação a performance. Fazer um update em uma tabela pode custar mais do que fazer um delete e depois um insert.

O que você poderia fazer era caso a linha 33 foi atualizada, apaga e depois insere novamente. [=