Selecao DevMedia QUERO SER PRIME

Fórum Integração de ambiente Client/Server x Internet #327785

19/08/2006

0

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...


Aerreira

Aerreira

Responder

Posts

19/08/2006

Thomaz_prg

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.


Responder

Gostei + 0

19/08/2006

Aerreira

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.


Responder

Gostei + 0

21/08/2006

Thiago Vidal

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.


Responder

Gostei + 0

21/08/2006

Aerreira

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.


Responder

Gostei + 0

21/08/2006

Thiago Vidal

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.


Responder

Gostei + 0

21/08/2006

Aerreira

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.


Responder

Gostei + 0

22/08/2006

Thomaz_prg

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.


Responder

Gostei + 0

22/08/2006

Aerreira

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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar