Como você faria?
22/02/2013
0
Estou implementando um sistema de atualização de dados, a logica seria mais ou menos igual ao DropBox, que automaticamente quando o outro usuário cria/altera/exclui todos os usuários recebem a atualização.
Qual a melhor maneira de se fazer isto ? sem consumir/comprometer muito o desempenho do sistema.
Seria um timer executado a tantos segundos, ou alguma outra forma?
Desde já agradeço a todos pela ajuda.
Desenvolvendo em C#..
Estevão Giron
Posts
23/02/2013
Joel Rodrigues
Você pode utilizar a classe FileSystemWatcher, que fica "observando" uma pasta ou arquivo e sempre que ocorrerem alterações, ela gera uma notificação.
Veja esse link: [url]http://msdn.microsoft.com/pt-br/library/system.io.filesystemwatcher.aspx[/url].
24/02/2013
Estevão Giron
Deixa eu tentar explicar melhor...
O Sistema funciona assim, Banco de Dados MYSQL Local, e Banco de Dados MYQSL Servidor, para comunicação estou usando WCF
A logica do sistema é o seguinte.
São varias tabelas que deverá ser sincronizadas ex: Clientes, Fornecedores, Fotos etc...
Hoje o sistema esta em pleno funcionamento, mas está funcionando assim o cliente precisa clicar em sincronizar os dados, quando sincroniza, ele verifica quais os dados que não foram atualizados e envia para o servidor, depois ele verifica no servidor quais os dados novos/alterados/exluidos e baixa a atualização...
O estou desenvolvendo um novo sistema de atualização onde deverá funcionar em background...onde não precisará mais clicar em sincronizar o próprio sistema irá enviar e receber as atualizações sem a necessidade de clicar em botão, deverá ser tudo automático. (Está logica é igual ao do Dropbox, não precisa clicar em nada, e automaticamente identifica as alterações e baixa)
Para enviar é facil, existem varias maneiras...inclusive estou usando o FileSystemWatcher para verificar se teve algum atualização local..
ex:
10 usuários que estão usando o software...
Usuário 1 - alterou o cadastro do João, automaticamente ele envia para o banco de dados....
Até aí sem problema...
O Problema esta sendo pra identificar se tem atualização a ser baixada ou não...
Os outros 9 usuários como irão saber se tem atualização a ser baixada....
Qual seria a melhor maneria usando um timer para verificar via WCF a cada X segundos se tem atualização no servidor? ou existe alguma outra forma de se fazer isto...
25/02/2013
Joel Rodrigues
25/02/2013
Valter Furtado
25/02/2013
Robson Alves
Esse serviço fica na máquina, então independente do usuário estar logado ou não no sistema, o serviço fica encarregado de atualizar. O timer neste caso é indispensável.
[url]http://msdn.microsoft.com/pt-br/library/gg454586.aspx[/url]
25/02/2013
Estevão Giron
Valter Furtado, Sim tenho um servidor dedicado, onde tenho total controle. Estava pensando em fazer esta comunicação entre tcp/ip mas o problema que este negocio de abrir porta, em alguns clientes existem regras, ou seja, firewall não permite.
Então estou pesando em fazer isto em wcf via http...
Robson Alves - RobsonAlves.net, realmente via windows service seria melhor, e estarei implementando no sistema...
25/02/2013
Frederico Filho
Vc pode da uma olhada neste link: http://www.html5rocks.com/en/tutorials/websockets/basics/
Se não me engano somente o IIS 8 é compatível com o websocket, tem de pesquisar
Tem um amigo meu que está desenvolvendo algo bem parecido, posso procurar mais informações sobre o projeto dele.
Qualquer coisa pode entrar em contato.
Espero ter ajudado.
Até mais.
25/02/2013
Robson Alves
http://signalr.net/
26/02/2013
Estevão Giron
E cheguei a seguinte conclusao vou usar um serviço do windows, wcf e um thread que será executado a um determinado tempo....
O signalr... vai estar junto para um chat....
01/03/2013
Joel Rodrigues
Sendo assim, vou encerrar o tópico, beleza?
Clique aqui para fazer login e interagir na Comunidade :)