Arquitetura Cliente/Servidor qual é a melhor maneira?
11 respostas
paulofafism
Boa tarde Pessoal,
Estou desenvolvendo uma aplicação Desktop utilizando Swing só que eu quero seguir a arquitera Cliente/Servidor
Entretando Somente o servidor tera a aplicação e o banco de dados instalados. Nas máquinas cliente irá possuir somente um atalho apontando para o executavel da aplicação que esta no servidor, pois não quero ter que ficar instalando o servidor de banco de dados em cada máquina.
Estou pensando Em colocar um serviço rodando no servidor e minha aplicação se conecta a esse serviço, logo o serviço efetua as conexões com o banco.
Gostaria de saber das experiencias de vocês qual é a melhor abordagem a ser utilizada. pesquisei sobre RMI inicial me pareceu uma idéia boa utilizar ela. O que vocês acham?
RMI normalmente dá muitos problemas de escalabilidade e firewalls, além de ser difícil de monitorar e diagnosticar problemas.
Mesmo o acesso remoto a EJBs, que usa IIOP (versão “turbinada” do RMI), é meio difícil de usar e configurar.
Você pode usar um servidor de aplicações tradicional, como o JBoss ou Glassfish, ou um web container, como o Tomcat, só que servindo web services (SOAP ou REST).
Não é preciso usar uma arquitetura WEB; apenas faça o servidor servir web services.
P
palmadias
RMI eh sempre um boa anternativa qdo vc quer compartilhar objetos java entre diferentes aplicações java. Mas no seu caso ta parecendo que vc quer conctar num banco de dados. Então utilize a comunicação JDBC mesmo. Crie uma camada DAO, e faça os teus objetos de negocio acessarem essa camada DAO.
fantomas
O SPRING já tem tudo o que vc precisa, verifique a documentação e verá.
Opcões: RMI (tcp), Hessian e Burlap (http)
flws
paulofafism
RMI normalmente dá muitos problemas de escalabilidade e firewalls, além de ser difícil de monitorar e diagnosticar problemas.
Mesmo o acesso remoto a EJBs, que usa IIOP (versão “turbinada” do RMI), é meio difícil de usar e configurar.
Você pode usar um servidor de aplicações tradicional, como o JBoss ou Glassfish, ou um web container, como o Tomcat, só que servindo web services (SOAP ou REST).
Não é preciso usar uma arquitetura WEB; apenas faça o servidor servir web services.
Sua solução parece ser bastante interressante. Para mim o JBoss ou o Glassfish eram somente para ser usados com aplicativos WEB então posso usar para fazer essas conexões com a minha aplicação Desktop.
Você tem algum link que explicando a utilização desses servidor JBoss ou Glassfish?
Minha aplicação já esta se conectando ao banco de dados, estou utilizando Hibernate e SQLServer. Esses padrões todos ai DAO e alguns padrões de projeto ja estou utilizando em minha aplicação, a minha maior duvida é como deixar apenas no servidor o banco de dados instalados pois não quero instalar o banco de dados em todas as máquinas
T
thingol
Tinha esquecido do Spring. Para uma aplicação cliente-servidor é plenamente possível usar Spring dos dois lados; as aplicações ficam enxutas e rápidas. Nesse caso, para evitar problemas com firewalls e outras tranqueiras, uma conexão http seria desejável.
paulofafism
Humm interressante. Vou dar uma analizada no Spring, qualquer coisa posto os resultados obtidos
paulofafism
Inicialmente eu tinha pensando em RMI, pq minha aplicação esta facil de usar pois como minhas classes a maioria delas estou usando interfaces, principalmente nos DAOs, classes de conexões controller e entre outros. Mas vou olhar o RMI e Spring
P
palmadias
paulofafism:
RMI normalmente dá muitos problemas de escalabilidade e firewalls, além de ser difícil de monitorar e diagnosticar problemas.
Mesmo o acesso remoto a EJBs, que usa IIOP (versão “turbinada” do RMI), é meio difícil de usar e configurar.
Você pode usar um servidor de aplicações tradicional, como o JBoss ou Glassfish, ou um web container, como o Tomcat, só que servindo web services (SOAP ou REST).
Não é preciso usar uma arquitetura WEB; apenas faça o servidor servir web services.
Sua solução parece ser bastante interressante. Para mim o JBoss ou o Glassfish eram somente para ser usados com aplicativos WEB então posso usar para fazer essas conexões com a minha aplicação Desktop.
Você tem algum link que explicando a utilização desses servidor JBoss ou Glassfish?
Minha aplicação já esta se conectando ao banco de dados, estou utilizando Hibernate e SQLServer. Esses padrões todos ai DAO e alguns padrões de projeto ja estou utilizando em minha aplicação, a minha maior duvida é como deixar apenas no servidor o banco de dados instalados pois não quero instalar o banco de dados em todas as máquinas
com jdbc vc não precisa instalar o banco em diversos lugares.
paulofafism
Não sei se você entendeu. Mas eu quero deixar somente o banco de dados e gerenciador de banco de dados no servidor. Pois não quero ter que ficar instalando o gerenciador em todas as maquinas
T
thingol
No seu programa cliente, em vez de você usar JDBC para acessar o banco diretamente, você solicita ao servidor que faça a consulta e retorne os resultados. Portanto, você só precisará ter uma instância do banco de dados. Se escrever corretamente o servidor (e usando um web service isso é quase automático) então você também só precisará ter uma instância do servidor.
paulofafism
Eu estive olhando o EJB ainda não fiz testes só li a respeito. Você tinha falado sobre eu usar um servidor de aplicações como o GlassFish. Você tem alguma material que explique como configurar o GlassFish como servidor de aplicações?