¿Cuáles son las ventajas y desventajas de utilizar RMI o JMS entre los niveles web y empresarial?

StackOverflow https://stackoverflow.com/questions/71144

  •  09-06-2019
  •  | 
  •  

Pregunta

Para una aplicación típica de cliente web a servlet/WS a nivel empresarial (Spring o EJB), ¿cuáles son las ventajas y desventajas de enfoques como RPC remoto o mensajería para nivel web (servlet) a nivel empresarial remoto, aparte de la ¿Aspectos básicos de sincronización/asíncrono?

¿Fue útil?

Solución

¿Por cliente web te refieres a navegador web?Si es así, mis recomendaciones son mirar cosas como DWR o JAX-RS.RMI o JMS solo funcionan realmente cuando ambos lados son código Java.

Con cualquier tecnología remota, el mayor problema al utilizarla tiende a ser cuán intrusiva se vuelve la tecnología en sus objetos comerciales.p.ej.usando la interfaz RMI/excepciones en todas partes o usando las API JMS dentro de su código comercial.

Mi recomendación es usar POJO en todas partes de Java y luego usar una tecnología como Control remoto de primavera para superponer su middleware, ya sea RMI o JMS o lo que sea, pero desacople totalmente el código de middleware de su lógica de negocios para que pueda cambiar entre tecnologías en cualquier momento (y mantener su código de lógica de negocios más simple y enfocado en su problema de negocios).

Por ejemplo ver el Implementación de camello de Spring Remoting que luego le permite usar cualquiera de estos transportes y protocolos como RMI, JMS o incluso HTTP simple, correo electrónico, archivos o XMPP, luego cambie entre ellos de manera trivial usando un simple cambio de cadena URI.

Otros consejos

Usamos RMI a través de Spring y lo encontramos muy fácil de usar, bastante robusto y rápido.Aunque nuestros requisitos eran un enlace bastante receptivo y no había una necesidad real de agregar un componente de mensajería.

SUN RMI rompió para nosotros.

La configuración y la recolección de basura para una aplicación de muy larga ejecución con medición continua.Estamos parcheando para que funcione continuamente.Las aplicaciones JMS que ejecutamos no sufren los errores de falta de memoria ni los problemas de gc que presenta RMI.Todo lo que necesite llamar a System.gc() periódicamente y no funcione con la recopilación incremental para recuperar recursos está codificado incorrectamente.

La confiabilidad de RMI mejora con el JDK 6 y la configuración de propiedades correcta, pero JHC es un marco complicado.RMI mejoraría enormemente usando canales en nio y arreglando los usos de system.gc() en Sun nio.

La respuesta correcta: comunicación (mecanismo) separada del código de dominio.RPC está estrechamente acoplado y el protocolo y la aplicación pueden interferir entre sí.JMS separa el protocolo de la aplicación, un paradigma mucho mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top