Arquitetura Cliente/Servidor vai para o buraco ou vai subir?

15 respostas
N

Galera, estou verificando o mercado em minha cidade no que tange a desenvolvimento de sistemas e o que verifiquei foi que a arquitetura Cliente/Servidor é muito utilizada, com programinhas em Delphi/VB e aqueles em DOS. Aí fui discutir com meu colega que desenvolve em cliente/servidor, ele veio falando que a grande vantagem é que o cliente só precisa de uma máquina cavala para o servidor e que as estações podem ser fracas para rodar a aplicação. Ele desenvolve em Developer da Oracle, e todo o processamento é feito no servidor, inclusive a aplicação fica toda no servidor e só criado um atalho para o servidor. Tenho um sistema que fiz em Java/Swing, mas ainda não mexi com redes.

Gostaria da opinião de vcs, como faço ???
Se eu criar um atalho no servidor, vai rodar ??? De qualquer forma tenho que ter nos clientes instalado a JVM, certo !!! Meu banco (fiz em Interbase) vai ficar no servidor, eu precisaria instalar o Interbase nos clientes e setar o caminho para o servidor, ou se eu deixar o banco lá no servidor ele vai funcionar ???
Bom, qualquer ajuda seria bem-vinda !!!
Eu quero desenvolver uma aplicação que rode beleza nos clientes, mas acho que pode ficar lento em máquinas ruins (Pentium 166-233, RAM 64 para baixo), pois terei que colocar a JVM e também o Interbase. O que vcs acham ??? Já tiveram alguma experiência assim ???

Como posso resolver legal este problema ??? Talvez o problema não seja o Java, mas a arquitetura da rede e da aplicação. Estou tentando um convívio com uma arquitetura muito legal: é o seguinte, os clientes não tem hd, drive-cd, nem disquete, só processador, placa-mãe, memória,uma placa de rede com uma EPROM (chip para placas de rede) que dá um boot remoto num servidor Linux, depois para os usuários finais não ficarem enchendo o saco e reclamando da interface do Linux, fizeram uma ponte e os clientes acessam o Windows 2003 e gravando os dados tudo no servidor Windows 2003, ou seja, voltando aos bons e velhos “terminais burros”, só que + avançados (e muito). Essa arquitetura seria legal para nós desenvolvedores Java/Desktop, pois a aplicação rodaria muito bem num servidor cavalo Windows 2003 e os clientes não teriam processamento nenhum com relação a aplicação. Alguém já mexeu com essa arquitetura ??? Achei legal, será que pode ser a solução para as empresas que querem reduzir custos com informática e utilizar tecnologias novas como Java, por exemplo ??? Se alguém conhecer mais alguma arquitetura legal, poste aí falando sobre ela.

15 Respostas

louds

Terminais burros são uma solução burra ao meu ver. Hoje em dia não são mais economicamente viaveis.

Vale lembrar que um servidor para aguentar 12 usuarios navegando, lendo email, jogando paciencia, escrevendo no word, fazendo conta no excel, rodando o software cliente e alêm disso servir a aplicação como backend, ufa!, vai ser muito mais caro que 1 servidor razoavel e 12 estações das mais baratas do mercado.

Um computador mínimo hoje custa menos de 700 reais novo sem monitor.
10 dessas máquinas vão fazer muito mais pelos seus usuarios que 1 servidor de 5000 reais e 10 terminais burros de 200 reais.

Rode linux nas estações e servidor e o hardware sai de graça comparado ao custo microsoft da tua solução. Se o cara falar “poe pirata”, fale que voce vai ser eticamente obrigado a convidar a ABES a estupr ^H^H^H auditar a empresa dele. Se ele duvidar fale pra um amigo seu ligar, dizer que é da ABES e marcar o dia pro auditor visitar.

Quando a usar uma arquitetura cliente-servidor, o correto é usar um middle-tier (camada do meio) que faz todo trabalho pesado e complicado pro cliente, este que apenas faz o leva-e-traz dos dados.

Ou seja, clientes usando java+xul, servidor tomcat/jetty/jboss/whatever e backend mysql/postgresql/firebird/whatever é muito mais melhor de se trabalhar e desenvolver. Fica muito melhor que essas soluções “duvidosas” em delphi/v6/xyz.

Luca

Olá

Bem, o louds já falou tudo que poderia falar e que as vezes aqui no GUJ sou até chato de tanto que repito sobre a morte deste modelo cliente/servidor que era usado no milênio passado.

Mas queria complementar para dizer 2 coisas:

  1. Não é aceitável com linguagem nenhuma colocar um interbase em cada cliente.

  2. Com estas máquinas que citou a melhor linguagem é clipper pois até windows roda mal.

[]s
Luca

dsiviotti

Com Pentium 133-266 e 64 de MB RAM, no máximo, fica muiti difícil fazer um programa com Swing. Os usuários vão querer te matar. Talvez você deva trocar sua interface por um Browser.
Quanto ao Interbase, o normal é instalar o Client pelo menos.

Luca

Olá

Tem razão Douglas, no tempo em que se amarrava cachorro com linguiça e se usava a arquitetura cliente servidor, havia este negócio de instalar cliente de base de dados e eu nem lembrei disto.

[]s
Luca

_fs

Não existe só Swing.

Tem Thinlet pra aplicações em Java, que é bem rápido para desenvolver.

E tem esse bonito aqui, mas não testei ainda:
http://swingml.sourceforge.net/

N

Bem, pelo o que eu estou vendo precisarei instalar o Interbase nos clientes procurando o banco no server, certo ???
Quanto ao modelo que o louds passou, acho que é o mais correto para quem mexe com Java, mas ainda não tenho conhecimento para fazer isso, então por enquanto terei que ficar com Swing, mesmo. Essa arquitetura que vc falou, louds, pode ser viável para grandes empresas como deve ser no seu caso aí em São Paulo, mas como eu estou na “roça” ainda, as empresas são pequenas e são poucas na minha cidade que conseguem ter uma homogeneidade em hardware. Fazer o quê, quem mandou morar no interior ???

Uma solução pode ser um compilador Java que se não me engano chama-se just-in-time, que compila o .java para a plataforma que se está usando, ou seja, não teria aquela coisa de bytecodes e nem portabilidade, mas ouvi falar que com este compilador sua aplicação Java fica muito mais rápida, pois é somente compilado (não é feito a interpretação).
Alguém já usou este compilador ??? Vale a pena para este caso meu ???

O legal de postar aqui é que sempre aparece alguém para ajudar, valeu galera.

J

Servidor: BD + Camada de negócios em Java
Cliente: Java + Thinlet

O Cliente se comunicando com o servidor via WebServices (XML_RPC!?).

Assim não seria preciso instalar o BD no cliente, já que o acesso aos dados seria feito pela camanda de negócios no servidor.

Viajei ou esse esquema é viável?

maresp

Com java vc não precisa.

:?: :?: :?: …o que vc acha que swing é?

Aqui eu te faço uma pergunta: Pra que tipo de negócio vc tá querendo desenvolver? Ao contrário do que vc está pensando esta arquitetura que o louds citou é muito simples. Complicado (ou melhor, solução burra) é aquela de terminais burros.

“Neo”:
Uma solução pode ser um compilador Java que se não me engano chama-se just-in-time, que compila o .java para a plataforma que se está usando, ou seja, não teria aquela coisa de bytecodes e nem portabilidade, mas ouvi falar que com este compilador sua aplicação Java fica muito mais rápida, pois é somente compilado (não é feito a interpretação).
Alguém já usou este compilador ??? Vale a pena para este caso meu ???

O JIT da JVM não é pra vc gerar binários a torto e a direito. Isto é feito de forma transparente com trechos de códigos mais executados em sua aplicação. Existem geradores de executáveis sim, mas não é o JIT.

N

:?: :?: :?: O que seria isto ??? Uma interface tipo Swing :?:

:?: :?: :?: Não entendi este trecho seu !!! :roll:

Essa arquitetura que o louds citou é simples, para vcs que já programam nela :stuck_out_tongue: . O que eu quero é saber se tem uma forma de utilizar o que eu já tenho pronto (interface Swing,banco Interbase, regras de negócios em Java) e ou se eu posso mudar alguma coisa. Quanto a solução burra, tem gente ganhando mais dinheiro com isso do que vc pensa :shock: !!!

O que eu quero não é gerar executáveis, isso eu já consigo; eu quero um ganho de performance na compilação nos clientes, ou seja, rodando Java, só que com maior rapidez, mesmo que com isso eu fique preso a plataforma que eu compilei, entendeu ???

_fs

Google é meu pastor e nada me faltará:
http://www.google.com/search?sourceid=mozclient&ie=utf-8&oe=utf-8&q=thinlet
http://www.thinlet.com/

maresp

Não entendeu? Então leia novamente o que vc escreveu:

Até onde eu saiba swing é java não é? Você colocou de uma forma que parecia 2 coisas distintas

Se o teu MVC tiver “beautiful” então é só aprender como utilizar o modelo que o louds citou e escrever uma nova view. Pode ser thinlet como o LIPE sugeriu.

Desculpe, não foi minha intenção chamar a solução de burra, é que o louds já tinha citado isso, eu só utilizei a expressão dele (por isso brigue com ele :twisted: ). Mas se tem gente ganhando rios de dinheiro com isso, poderiam ganhar mais com algo mais funcional.

“Neo”:

O que eu quero não é gerar executáveis, isso eu já consigo; eu quero um ganho de performance na compilação nos clientes, ou seja, rodando Java, só que com maior rapidez, mesmo que com isso eu fique preso a plataforma que eu compilei, entendeu ???

Entendí. Então olha isso aqui: http://java.sun.com/docs/hotspot/VMOptions.html mas veja bem no que vai mexer hein pra não estragar o brinquedinho.

louds

XUL/Thinlet é uma alternativa mais leve e produtiva ao swing. Dificilmente alguem que tenha experimentado dos dois vai negar isso.

Fazer clientes magros falando com 1 servidor de aplicação (jboss ou mesmo tomcat) via webservices, rmi ou protocolo caseiro não é muito dificil. Usando o pattern de Command fica quase trivial e não intrusivo.

Usando frameworks auxiliares, como spring, hibernate, etc… A produtividade é enorme, apesar de uma curva meio íngreme de aprendizado.

Essa solução que eu sugiro se adequa para empresas com 5, 10 ou 500 terminais sem maiores problemas.

Usar clientes gordos falando direto com o banco de dados é a pior decisão de desenvolvimento que voce pode tomar, pq não é uma arquitetura muito escalavel ou de facil manutenção.

N

Foi mal !!! É que eu queria especificar que minha interface está em Swing e minhas regras de negócios estão em Java puro. Mais quero separar minhas regras de negócios do código da interface (o que tenho até agora), meu código tá parecendo que desenvolvi em modo estruturado. Para resolver isso posso usar JavaBeans (só ouvi falar, se tiver dando bobeira, podem falar) ???

Tb acho que uma homogeneidade em hardware seria a melhor solução para arquitetura de redes quanto para aplicações !!!

:shock: [size=“24”]TRIVIAL[/size] :?: :?: :?:
Chegou naquela parte que vc não sabe se chora ou se ri !!!

Clientes gordos ??? Clientes pesados ???

_fs

Cliente magro:

<button label="gravar" onclick="gravar()"/>

// e do outro lado do mundo

public gravar()
{
    System.out.println( "Eu sou um método bonito, pois independo do tipo de cliente que está me acessando neste momento. Não importa de onde nem como, farei meu serviço, como foi pedido." );
}

Cliente gordo:

<button label="gravar" onclick="gravar()"/>

// e na mesma página

function gravar()
{
    // TODO inutilizar minha aplicação, tornando-a não escalável, não manutenível, difícil de distribuir.
}
N

LIPE,

Isso é Servlets ou JSP ???
Ou tô dando bobeira ???

Criado 16 de setembro de 2004
Ultima resposta 21 de set. de 2004
Respostas 15
Participantes 7