Pessoal,
Vou disponibilizar uma aplicação WEB em um Data Center para meu cliente.
No entanto, esta minha aplicação depende de dados cadastrais dos sistemas legados do meu cliente, por exemplo, cadastro de “Clientes”.
De forma que, sempre que uma exclusão,uma atualização, ou uma nova inserção de Cliente acontecer no Sistema Legado, esta informação deve ser repassado para a minha aplicação que está no Data Center.
O sistema legado dele é Desktop e eu não vou mexer a mão no sistema legado dele, já existe uma equipe que vai mexer no sistema legado caso haja necessidade.
Já adianto que o sistema legado deles não dá suporte a web-services, então esqueçam a idéia de pedir ao sistema legado para enviar as mudanças diretamente para minha aplicação web através de um web-service.
Sendo assim, preciso montar uma solução de integração entre o sistema legado e a minha aplicação, de forma que tenho que fazer com que toda alteração na tabela de clientes do sistema legado seja transmitida para a minha aplicação.
Complementando,
Minha proposta inicial para o problema, é solicitar as desenvolvedores do sistema legado, que registrem as mudanças em clientes em arquivos TXT, estando estes arquivos em um pasta compartilhada de rede, e assim, eu irei instalar no ambiente do cliente, um aplicativo java desktop, que vai ficar monitorando esta pasta compartilhada e assim que um arquivo txt ali for depositado, este aplicativo java vai fazer a leitura e vai transmitir via web-service para a minha aplicação no Data Center externo.
Fico a espera de outras sugestões …
clone_zealot,
Eu não posso fornecer o acesso do BD do meu sistema que está em um DataCenter para o sistema legado que está em outro ambiente, questões de segurança.
O cadastro de clientes fica na máquina local, e não no servidor?
Dependendo do banco tu podes setar ele como servidor, e fazer a tua aplicação WEB conectar-se a ele.
Pra ser breve e objetivo como vc foi e não ficar elencando aqui as diversas vantagens e pontos de antenção que vc bem deve conhecer, e se não conhecer a gente pode conversar depois, vou dizer o que, certamente, dá pra ser dito. A modelagem conceitual da sua solução está condizente com os requisitos e restrições que vc menciona e a implementação não tem segredos.
Spranta,
Primeiro identifique quais são os pontos falhos no seu modelo para integração, exemplo.
Se você pretende criar uma integração em tempo real e no sistema existe um trafego considerável de informação podem ocorrer situações com problema em escrita nos arquivos nas seguintes situações:
-Duas instâncias de dois processos compartilham um mesmo arquivo txt e tentam solciitar a escrita ao mesmo tempo.
-Duas instâncias de um mesmo processo tentam escrever no arquivo txt ao mesmo tempo.
-Queda do sistema legado durante escrita em arquivo txt além de corromper o arquivo podem defasar as duas bases.
-Tempo de sincronização é alto e sem controles.
-Arquivo não poderá ser lido antes de sem completamente escrito.
-Espaço em disco, será acumulado um volume de arquivos em disco.
Com essas situações você poderá ver os pontos falhos na sua solução e quais são os possíveis contornos, por exemplo para o arquivo não ser lido antes de recebido uma movimentação completa você poderá usar arquivos indicadores, sendo um arquivo de dados e um indicador que dispara o processo e é gravado após o termino do arquivo de dados.
Quanto a outras possíveis soluções, uma que seria interessante é uma solução baseada em filas persistentes como JMS, AQ ou MQ-Series, caso não fosse possível, você pode arriscar com Sockets usando suporte no conceito de caixa d’agua para evitar as perdas de movimentação.
Por acaso não seria possível que o seu próprio Client em Java que vai rodar na plataforma cliente identifique as movimentações e as transmita via WS?