Aplicação em 3 camadas

10 respostas
M

Tenho que mudar uma arquitetura 3 camadas, a arquitetura está atualmente na 1 camada com client delphi, na 2 camada com windows 2000 server como servidor de aplicação e na 3 camada banco de dados db2.
Gostaria de saber o que é necessário para mudar a 2 camada, utilizando um servidor Java como JBoss ou JOnAS, e manter os clientes delhpi. Essa é a principal dúvida. Em como fazer o client delphi conversar com o servidor de aplicação.

[]'s

10 Respostas

pcalcado

Bem, iamgino que você esteja trabalhanco com COM/COM+/DCOM no seu HorriWindows para servir ao Delphi.

Basicamente você precisaria portas as regras de negócio dos componentes para classes Java, depois mudar a forma de conexão dos clientes ao seu AS.

Procure algo sobre CORBA e WebServices, são tecnologias que podem servir na implementação.

[]s

Luca

Olá

Não entendi bem o que atualmente há na sua camada 2 além do sistema operacional mas vamos lá:

Modo simples sem webservices e sem usar MOM, isto é, sem precisar de Jonas

  1. Os clientes Delphi devem enviar e receber mensagens via protocolo HTTP para o servidor na camada 2, isto é, GETs, POSTs, etc.

  2. No servidor aonde vai instalar o JBoss (ou tomcat) instale um servlet que troque mensagens HTTP com os clientes Delphi. Este servlet se entende com o DB2 usando JDBC ou hibernate

[]s
Luca

M

Na segunda camada tenho o windows 2000 server com socket server da microsoft, onde ele apenas faz um elo entre o banco de dados e o servidor.

Se eu utilizar esses métodos eu terei que mudar alguma coisa no meu client???

pcalcado

Uêpa, então vc tem 2 camadas :slight_smile:

Bom, aí a cirurgia é neurologica, você vai precisar extirpar as regras de negócio dos seus clientes Delphi e colocá-las no AS. Mudanças drásticas nos clientes, ams considere, vale muito a pena, se for possível FAÇA! :wink:

[]s

Luca

Olá

Não sei o que é este “windows 2000 server com socket server da Micro$oft” mas sempre que penso em aplicações com várias camadas nunca imagino que seja para redes locais. Não acredito que os sockets deste tal “windows 2000 server com socket server da Micro$oft” passem em qualquer firewall decente.

Para redes locais qq coisa serve. Não vale a pena usar servidor de aplicações. Aliás para ser bem radical, nem vale a pena imaginar nenhuma aplicação nova em 2004 confinada em uma rede local.

[]s
Luca

pcalcado

Hum…radical, Luca, mas concordo. Hoje em dia uma conexão custa menos de 100 pratas na maioria dos lugares onde já tem telefone.

Mas nada impede que você abra um socket passando pelo firewall. Abrir um não implica manter o sistema preso no aquário/escritório :stuck_out_tongue:

[]s

Luca

Olá

O que acontece é o seguinte:

A gente faz um programinha bonitinho que faz só um tiquinho de coisas para uma única pessoa na empresa. Aí alguém gosta e quer usar também. Depois este alguém muda para outra filial e quer continuar usando. Mais tarde um outro alguém quer fazer uma demo no cliente porque quer vender aquele trequinho ou então alguém quer acessar de casa.

Então o melhor é fazer desde o início os sistemas conectados por http/https, portas 80/443. Porque tão radical? Porque os departamentos de rede nem sempre são tão liberais como os caras do desenvolvimento. Http via porta 80 passa batido numa boa.

E nesta arquitetura o Java reina!

[]s
Luca

pcalcado

Tem um problema aí: nem tudo pode ser resolvido por HTTP(S).

Generalizar é ruim, se o carinha de rede bloqueou o firewall, vai ter que abrir a porta de alguma maneira, ele é pago para este tipo de coisa eisto é requisição para que o sistema funcione.

Não dá pra trabalhar numa Internet 80/8080-only.

[]s

M

A arquitetura utiliza um servidor socket server da borland, eu tinha me enganado, mas é utilizado também um componente query dataset para ligar o client ao servidor e as querys ficam armazenadas no servidor. E posteriormente iremos mudar os clientes para Java. Por isso eu gostaria de saber como fazer essa ligação entre o client delphi e o servidor de aplicação Java

pcalcado

Bom, o problema é que provavelmente a sua regra de negócio está nos clientes. Para trabalhar num ambiente Java, você pode:

  1. Fazer tudo o que faz via estes sockets da Borland em Java, sem mudar muito seus clientes

ou

  1. Passar a ter a regra de negócio no sue servidor de aplicações

O recomendado é 2. Provavelmente você vai ter que alterar muitas coisas nos seus clientes e SGBD, porque está numa arquitetura de duas camadas e você precisa separar melhor as responsabilidades.

Suas regras de negócio seriam colocadas em Um container Web ou EJBs, por exemplo, e seus clietnes Delphi se comunicariam com este serviço. Isto [a conexão] pode ser feito de várias maneiras, o Luca deu a idéia de utilziar sua aplicação Delphi como se fosse um browser, mandando e recebendo mensagens HTTP [nada de HTML]. Eu pessoalmente já vi isto funcionando e muito bem.

Outra solução, mais robusta, também baseada em HTTP é ustilizar WebServices, que são mensagens no protocolo SOAP passando por HTTP. Você também pode utilizar CORBA, que tem uma linguagem binária intermediária que Delphi e Java podem entender, assim você consegue trocar mensagens binárias entre os programas [HTTP seria apenas texto/XML].

A questão é: você não tem um Servidor de Aplicações hoje, você tem um servidor de conexões com o banco de dados. Sua regra de negócio, pelo visto, está nos clientes Delphi ou no banco de dados, você precisa centralizá-las em um Servidor de Aplicações. Isto é ttrabalhoso, mas vale o esforço. O problema não é concetar o cliente ao servidor, apra isto existem diversas maneiras, o problema é que você vai ter que mudar a sua arquitetura de 2 camadas para 3/n camadas.

[]s

Criado 5 de maio de 2004
Ultima resposta 5 de mai. de 2004
Respostas 10
Participantes 3