¿Cuáles son las ventajas y desventajas de los servicios web y RMI en un entorno exclusivo de Java?

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

Pregunta

Al desarrollar aplicaciones distribuidas, todas escritas en Java por la misma empresa, ¿elegiría servicios web o RMI?¿Cuáles son los pros y los contras en términos de rendimiento, acoplamiento flojo, facilidad de uso,...?¿Alguien elegiría WS?¿Puedes construir una arquitectura orientada a servicios con RMI?

¿Fue útil?

Solución

Intentaría pensarlo de esta manera:

¿Está optando por servicios independientes que se ejecuten uno debajo del otro y que se pueda acceder a esos servicios mediante aplicaciones que no sean Java en algún momento en el futuro?Entonces opte por los servicios web.

¿Solo desea distribuir partes de una aplicación (tenga en cuenta el singular) en varios servidores?Luego opte por RMI y no tendrá que abandonar el universo Java para que todo funcione en conjunto y estrechamente acoplado.

Otros consejos

Yo elegiría WS.

  • Es poco probable que WS/RMI sea su cuello de botella.
  • ¿Por qué cerrar la puerta a otras posibles tecnologías en el futuro?
  • RMI podría tener problemas si la versión de las clases en el cliente/servidor no está sincronizada.

Y...Lo más probable es que elija los servicios REST.

Si no lo va a necesitar (interoperabilidad con dispositivos que no sean Java), y probablemente no lo necesite, RMI será mejor;menos código, menos configuración, menos sobrecarga de ancho de banda.

Una opción si tienes miedo de necesitarlo es usar EJB3;Utiliza RMI, es muy fácil de configurar e implementar, pero también le permite convertir sus llamadas en servicios web fácilmente si los necesita.

Hagas lo que hagas, hazlo no crea lo tuyo;apegarse a un estándar.

mis opciones son:

serialización estándar de Java - ventajas:En mi humilde opinión, ofrece el mayor rendimiento y es fácil de implementar (estoy usando Spring para exponer la interfaz local como remota);contras :la serialización no funciona entre diferentes versiones de jvm

serialización binaria (por ejemplo, arpillera de jetty) - ventajas:Mismo rendimiento que con la serialización de Java y funciona entre diferentes versiones de JVM.

WS:solo si existe la necesidad de interoperabilidad entre diferentes plataformas java + .net; de lo contrario, tendrá demasiado peso.

RMI es un excelente transporte de rápido desarrollo, pero desaconsejaría su uso en un entorno de producción.El problema de compatibilidad de serialización puede complicar las cosas; debe coordinar sus implementaciones con mucho cuidado.

Los servicios web son ineficientes, sí, pero solo a través del hardware.Como alternativa, utilice XML sobre HTTP sencillo y ligero, en lugar de SOAP/WSDL completo.

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