Integração de ambiente Client/Server x Internet
Amigos,
Gostaria de uma opinião...
Num sistema Cliente/Servidor, já em operação num ambiente com 1 servidor Linux + 15 estações windows, rodando em Win32 acessando o banco Firebird. Para este sistema, está em vias de ser necessário criar uma parte dele (agenda para marcação de consultas) via web.
Como não estou cogitando implementar o banco em Firebird no servidor web (visto que é uma hospedagem terceirizada (locaweb) e não na empresa, pois a mesma não possui um IP fixo, possui apenas banda larga Velox), estou cogitando criar para a web uma aplicação ASP com banco Access (pois é onde tenho melhor domínio) e criar uma aplicação Delphi rodando em back-ground numa das estações da rede, fazendo o interfaceamento entre o banco Firebird e o Access na web, de modo a espelhar (em cada operação feita no banco) o que ocorrer na web no banco local e vice-versa, de modo a manter os dados atualizados.
Pergunto: alguem com alguma experiência semelhante? Acham uma boa solução com os recursos disponíveis? Sugerem algo diferente?
Abraços...
Gostaria de uma opinião...
Num sistema Cliente/Servidor, já em operação num ambiente com 1 servidor Linux + 15 estações windows, rodando em Win32 acessando o banco Firebird. Para este sistema, está em vias de ser necessário criar uma parte dele (agenda para marcação de consultas) via web.
Como não estou cogitando implementar o banco em Firebird no servidor web (visto que é uma hospedagem terceirizada (locaweb) e não na empresa, pois a mesma não possui um IP fixo, possui apenas banda larga Velox), estou cogitando criar para a web uma aplicação ASP com banco Access (pois é onde tenho melhor domínio) e criar uma aplicação Delphi rodando em back-ground numa das estações da rede, fazendo o interfaceamento entre o banco Firebird e o Access na web, de modo a espelhar (em cada operação feita no banco) o que ocorrer na web no banco local e vice-versa, de modo a manter os dados atualizados.
Pergunto: alguem com alguma experiência semelhante? Acham uma boa solução com os recursos disponíveis? Sugerem algo diferente?
Abraços...
Aerreira
Curtidas 0
Respostas
Thomaz_prg
19/08/2006
Não sei se ficaria bom, mas não daria pra usar o No-Ip para pegar o Ip do servidor de Banco, e fazer com que a aplicação web acesse diretamente o banco Firebird?
Digo porque, você teria que ficar pegando os dados do Access e atualizando no outro banco. Outra coisa, como iria pegar dados do Firebird?
Bom, acho que daria pra usar o no-ip.. só que o desempenho não fica tão bom, se for usando conexão direta. Fiz algo semelhante, e o rendimento melhorou, usando DataSnap.
Digo porque, você teria que ficar pegando os dados do Access e atualizando no outro banco. Outra coisa, como iria pegar dados do Firebird?
Bom, acho que daria pra usar o no-ip.. só que o desempenho não fica tão bom, se for usando conexão direta. Fiz algo semelhante, e o rendimento melhorou, usando DataSnap.
GOSTEI 0
Aerreira
19/08/2006
Não sei se ficaria bom, mas não daria pra usar o No-Ip para pegar o Ip do servidor de Banco, e fazer com que a aplicação web acesse diretamente o banco Firebird?
Sim, seria uma opção, mas como eu conectaria via ASP o banco Firebird? (não sei como)
Digo porque, você teria que ficar pegando os dados do Access e atualizando no outro banco. Outra coisa, como iria pegar dados do Firebird?
Haveria a aplicação Delphi numa das estações da rede interna da empresa conectando-se aos dois bancos (firebird-local / access-remoto), enviando e recebendo pacotes com dados para atualização nos dois sentidos.
Bom, acho que daria pra usar o no-ip.. só que o desempenho não fica tão bom, se for usando conexão direta. Fiz algo semelhante, e o rendimento melhorou, usando DataSnap.
Minha dúvida é essa: se fizer de algum modo uma conexão do site para o banco firebird do cliente isso ficaria rápido? E a segurança do banco? Meu cliente está com muito receio de fazer isso pois estaria expondo o banco de dados interno da empresa para a internet. Se usar uma aplicação que faça ´sozinha´ as transações de atualização, o resultado seria mais seguro, porém não sei se mais rápido.
GOSTEI 0
Thiago Vidal
19/08/2006
eu acho que tudo depende da forma como os dados forem armazenados na web.
vc poderia criar 2 tabelas, 1 com as marcações, e outra de LOG de operações do tipo Inclusao, Alteração, Exclusão. Assim, para manter os bancos sincronizados, vc poderia ler o log do servidor web e executar no firebird, e ler o log no servidor firebird e fazer o mesmo.
Com o firebird é até simples de fazer isso com o uso de triggers, já no ASP com access, deve ser feito via programação, mas se for apenas 1 tabela simples, não deve ser problema.
Lembrando que o programa deve tratar tudo dentro de uma transação, de forma que se houver um erro, todo o processo deve ser cancelado, e após a correção, tudo possa ser refeito sem perigo de executar 2x o mesmo comando no banco de dados.
Para cadastros pequenos de 1 ou 2 tabelas essa solução funciona numa boa, para cadastros maiores, o ideal seria utilizar web services ou DataSnap mesmo.
vc poderia criar 2 tabelas, 1 com as marcações, e outra de LOG de operações do tipo Inclusao, Alteração, Exclusão. Assim, para manter os bancos sincronizados, vc poderia ler o log do servidor web e executar no firebird, e ler o log no servidor firebird e fazer o mesmo.
Com o firebird é até simples de fazer isso com o uso de triggers, já no ASP com access, deve ser feito via programação, mas se for apenas 1 tabela simples, não deve ser problema.
Lembrando que o programa deve tratar tudo dentro de uma transação, de forma que se houver um erro, todo o processo deve ser cancelado, e após a correção, tudo possa ser refeito sem perigo de executar 2x o mesmo comando no banco de dados.
Para cadastros pequenos de 1 ou 2 tabelas essa solução funciona numa boa, para cadastros maiores, o ideal seria utilizar web services ou DataSnap mesmo.
GOSTEI 0
Aerreira
19/08/2006
vc poderia criar 2 tabelas, 1 com as marcações, e outra de LOG de operações do tipo Inclusao, Alteração, Exclusão. Assim, para manter os bancos sincronizados, vc poderia ler o log do servidor web e executar no firebird, e ler o log no servidor firebird e fazer o mesmo.
A ideia é justamente essa. Uma tabela de transações no banco accesss onde as duas aplicações (ASP e Delphi) possam ler e gravar dados, fazendo a transação correspondente nos dois bancos.
Pergunto: dá prá abrir um banco access pelo Delphi e atualizar seus dados estando este banco num site web?
O banco firebird tem umas 80 tabelas, mas a parte de agendamento é formada basicamente por 4 tabelas apenas. Especialidades/ Médicos/ Horários disponíveis/ Apontamentos. Existem outras tabelas de apoio, porém na web seria o mais simples possível, apenas para permitir o agendamento do paciente sem a necessidade dele ir ou ligar para a clínica.
GOSTEI 0
Thiago Vidal
19/08/2006
o driver do access só te permite abrir arquivos locais.
o ASP, foi planejado para gerar arquivos html, mas nada impede de que outros tipos de arquivo sejam gerados... entao neste caso, recomendaria fazer um ASP que gera um arquivo TXT com a lista de inserts e updates executados, ou talvez até um CSV com uma formatação própria, de forma que estes comandos possam ser regenerados pelo Delphi.
outro cuidado, deve ser o de marcar os comandos já transferidos para o sistema de forma que nao sejam duplicados.
o ASP, foi planejado para gerar arquivos html, mas nada impede de que outros tipos de arquivo sejam gerados... entao neste caso, recomendaria fazer um ASP que gera um arquivo TXT com a lista de inserts e updates executados, ou talvez até um CSV com uma formatação própria, de forma que estes comandos possam ser regenerados pelo Delphi.
outro cuidado, deve ser o de marcar os comandos já transferidos para o sistema de forma que nao sejam duplicados.
GOSTEI 0
Aerreira
19/08/2006
o driver do access só te permite abrir arquivos locais.
Xiiiiiiiiiii, mais alguém confirma isso?
Vou acabar tendo que partir prum TXT mesmo... Mas a coisa vai ficando pior de lidar...
Acho que o ideal mesmo seria algo on-line direto, a página de internet acesando direto o banco principal, nada de cargas intermediárias, mas aí começa a envolver mais custo e maior nivel de segurança no ambiente de TI do cliente. Concordam?
outro cuidado, deve ser o de marcar os comandos já transferidos para o sistema de forma que nao sejam duplicados.
Ok, isso já está sendo considerado desde o principio. Tenho outros sistemas que fazem coisa semelhante (intefaceamento entre sistemas distintos), porém apenas no ambiente da rede-local, nada pela internet.
GOSTEI 0
Thomaz_prg
19/08/2006
Sim, seria uma opção, mas como eu conectaria via ASP o banco Firebird? (não sei como)
VocÊ pode fazer o seguinte, direcionar, no modem, para acessar a porta 3050 do seu servidor (com o BD firebird). Nesse ponto daí, você poderia usar o No-Ip para acessar o seu servidor com o BD. Ou até mesmo, se não quer conectar no seu BD direto, crie um (BD) só pra isso, e acesse dessa forma, porque daí você teria como montar uma aplicação para pegar os dados de um banco e passar pra outro.
Minha dúvida é essa: se fizer de algum modo uma conexão do site para o banco firebird do cliente isso ficaria rápido? E a segurança do banco? Meu cliente está com muito receio de fazer isso pois estaria expondo o banco de dados interno da empresa para a internet. Se usar uma aplicação que faça "sozinha" as transações de atualização, o resultado seria mais seguro, porém não sei se mais rápido.
Velocidade, vai depender do seu link...segurança, você pode alterar a senha do SYSDBA (se já não o fez).
thiago_vidal escreveu:
o driver do access só te permite abrir arquivos locais.
Xiiiiiiiiiii, mais alguém confirma isso?
Pelo que sei é isso mesmo.
Amigo, experimente fazer o seguinte, crie um WebService como sugerido pelo colega, ou então, se for usar DataSnap, acesse usando o componente WebConnection, instalandoi no seu server o IIS.... digo isso porque, você pode colocar uma senha, controlada pelo proprio windows, e o WebConnection consegue fazer o login nela. O mesmo serve para o WebService... se usar o IIS teria integração com o windows, sendo assim, você pode definir uma senha para acessar o webservice.
GOSTEI 0
Aerreira
19/08/2006
VocÊ pode fazer o seguinte, direcionar, no modem, para acessar a porta 3050 do seu servidor (com o BD firebird). Nesse ponto daí, você poderia usar o No-Ip para acessar o seu servidor com o BD. Ou até mesmo, se não quer conectar no seu BD direto, crie um (BD) só pra isso, e acesse dessa forma, porque daí você teria como montar uma aplicação para pegar os dados de um banco e passar pra outro.
No ambiente do cliente o modem está conectado a um roteador que está ligado ao servidor linux que contém o banco firebird. Configurar o modem ou o roteador? Vale lembrar que o site ficará hospedado fora, num servidor locaweb, ok? Continuo sem saber como acessar o firebird (no meu servidor) por ASP (no servidor locaweb).
Velocidade, vai depender do seu link...segurança, você pode alterar a senha do SYSDBA (se já não o fez).
Mas por eu estar com uma porta aberta para acesso ao BD não haveria uma brecha aberta para um hacker tentar acessar e alterar dados dentro do banco ou mesmo acessar o servidor inteiro? Esse é o medo do dono da clínica... (não tenho experiência em segurança de dados)
Amigo, experimente fazer o seguinte, crie um WebService como sugerido pelo colega, ou então, se for usar DataSnap, acesse usando o componente WebConnection, instalandoi no seu server o IIS.... digo isso porque, você pode colocar uma senha, controlada pelo proprio windows, e o WebConnection consegue fazer o login nela. O mesmo serve para o WebService... se usar o IIS teria integração com o windows, sendo assim, você pode definir uma senha para acessar o webservice.
Atenção: meu servidor não é windows, portanto não tem IIS... Onde fica o site sim é windows2003, porém não tenho acesso para interagir com o servidor a ponto de instalar coisas além da minha área de dados.
Vou acabar desistindo dessa idéia...
GOSTEI 0