Pergunta

Ao desenvolver aplicações distribuídas, todos escritos em Java pela mesma empresa, você escolheria Web Services ou RMI? Quais são os prós e contras em termos de desempenho, baixo acoplamento, facilidade de uso, ...? Que alguém iria escolher WS? você pode construir uma arquitetura orientada a serviços com RMI?

Foi útil?

Solução

Eu tento pensar nisso desta maneira:

Você está indo para serviços independentes que funcionam sob o outro, e esses serviços podem ser acessados ??por aplicações não-java em algum momento no futuro? Em seguida, ir para serviços web.

Você só quer partes propagação de uma aplicação (mente a singular) ao longo de vários servidores? Em seguida, ir para RMI e você não terá que deixar o universo Java para ter tudo trabalhando juntos fortemente acoplados.

Outras dicas

Eu escolheria WS.

  • É improvável que WS / RMI será o seu gargalo.
  • Por que fechar a porta para outras tecnologias possíveis no futuro?
  • RMI pode ter problema se a versão de aulas sobre cliente / servidor ficar fora de sincronia.

E ... eu provavelmente escolher os serviços REST.

Se yagni (interoperabilidade com os não-Java), e você provavelmente não são, RMI vai ser melhor; menos código, menos de configuração, menos sobrecarga da largura de banda.

Uma opção se você está com medo de que você está vai precisar dele é usar EJB3; ele usa RMI, é muito fácil de configurar e implementar, mas também permite que você para transformar suas chamadas em Web Services facilmente se você precisar deles.

Faça o que fizer, faça não criar sua própria coisa; vara a um padrão.

minhas escolhas são:

padrão Java serialização - prós: ofertas IMHO o mais desempenho, simples de implementar (estou usando Spring para expor interface local como um remoto); contras: serialização não funciona entre diferentes versões de JVM

serialização binária (por exemplo juta de cais) - prós: mesmo desempenho que com a serialização java e trabalha entre diferentes versões de JVM

WS:. Somente se houver uma necessidade de interoperabilidade entre diferentes plataformas java + .net, caso contrário, é muito haveweight

RMI é um grande transporte-desenvolvimento rápido, mas gostaria de aconselhar contra a usá-lo em um ambiente de produção. O problema de compatibilidade de serialização pode tornar as coisas difíceis, você tem que coordenar as implantações com muito cuidado.

WebServices são ineficientes, sim, mas apenas através de hardware para ele. Alternativamente, uso simples, XML sobre HTTP leve, em vez de full-fat SOAP / WSDL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top