¿Cuáles son las ventajas y desventajas de RMI?Ventajas y desventajas de usar java rmi
Respuesta
Las ventajas y desventajas son similares a las de cualquier sistema similar a RPC (Llamada a procedimiento remoto). Hay una apariencia superficial de simplicidad, porque los objetos que de hecho son remotos pueden tratarse como si fueran locales.
Esto parecería un gran beneficio para la simplicidad de la programación, pero existen costos ocultos. Los sistemas distribuidos tienen problemas de latencia y potencial de falla parcial que el programador debe conocer. Una invocación de un método remoto está sujeta a posibles fallas de seguridad, problemas de latencia, fallas de la red, etc. El papeleo sobre este tipo de problemas puede ser un desastre para la confiabilidad.
Waldo et al. tienen una buena discusión de los problemas.
Desde mi experiencia:
Pros:
- Fácil de empezar
- carga dinámica de clases es muy potente
- Si implementa algo así como más adelante no se puede cambiar de servidor para una larga tiempo y desarrollo del cliente (una excepción en el servidor de rmi tiene que obtener estas clases en classpath, por lo tanto, sea servidor en red o incluirlas y reconstruir el servidor)
Se puede implementar dos interfaces así:
interfaz tarea común:
public interface Task<T extends Serializable> extends Serializable {
T execute();
}
Rmi interfaz:
public interface RmiTask extends Remote {
<T extends Serializable> T executeTask(Task<T> task) throws RemoteException;
}
RmiTask
aplicación del lado del servidor:
public class RmiTaskExecutor implements RmiTask {
public <T extends Serializable> T executeTask(Task<T> task) {
return task.execute();
}
}
exampl e cliente Task
aplicación:
public class IsFileTask implements Task<Boolean> {
final String path;
public IsFileTask(String path) {
this.path = path;
}
public Boolean execute() {
return new File(path).isFile();
}
}
Contras:
- Podría ser inseguro, cuando se utiliza la carga de clases Dinámica (cliente sirve aplicación de tipos pasado) - por ejemplo, se sabe que el servidor RMI llama
method()
enPassedObject
, pero un cliente maravilloso podría anular este método y ejecutar lo que quiera allí ... - devolución de llamada difícil de implementar que funcionaría a través de Internet (necesita establecer una nueva conexión de servidor a cliente; puede ser difícil pasarla) a través de NAT/enrutadores/firewalls)
- cuando de repente rompiste la conexión durante la ejecución del método remoto sucede que este método no volvería (recomiendo envolver llamadas rmi en
Callable
sy ejecutarlas con tiempos de espera definidos).
- 1. Servicios web vs EJB vs RMI, ventajas y desventajas?
- 2. Ventajas y desventajas de usar Storyboarding?
- 3. Ventajas y desventajas de usar Enterprise Library
- 4. Ventajas y desventajas de NHibernate
- 5. WCF: ventajas y desventajas
- 6. Ventajas y desventajas de BPMN?
- 7. Ventajas y desventajas de DotNetNuke?
- 8. Ventajas y desventajas de Java EE frente a los servlets
- 9. Android NDK ventajas y desventajas
- 10. Ventajas y desventajas de los motores de reglas de Java
- 11. Ventajas y desventajas de los métodos encadenables?
- 12. Ventajas y desventajas de usar imágenes codificadas en base64
- 13. ¿Cuáles son las ventajas y desventajas de usar esquemas XML?
- 14. ¿Cuáles son las ventajas y desventajas de usar boost :: iterator_facade?
- 15. ¿Cuáles son las ventajas y desventajas de usar el GAC?
- 16. ¿Cuáles son las ventajas y desventajas de usar OpenID?
- 17. CMS orientado a eventos: ventajas y desventajas
- 18. Ventajas/desventajas de los archivos de encabezado
- 19. CCI vs. Mono.Cecil: ventajas y desventajas
- 20. Castle Windsor o Spring.NET: ventajas y desventajas
- 21. Ventajas/desventajas de punteros automáticos
- 22. ¿Cuáles son las ventajas y desventajas del Patrón de propiedades?
- 23. Ventajas/desventajas de guerras explosivas
- 24. ¿Cuáles son las ventajas/desventajas de usar Maven?
- 25. Ventajas y desventajas de SQLite.NET y SQL Server Compact
- 26. MemoryStream.Position ventajas/desventajas o MemoryStream.Seek
- 27. ¿Por qué debería usar JMS y no RMI + Queue?
- 28. Komodo Edit y Notepad ++ ::: Ventajas y desventajas ::: Desarrollador de Python
- 29. ventajas de E/S del puerto de finalización y desventajas
- 30. Ventajas/desventajas de IIS Web Garden
Gracias por el enlace al documento. Puedo usar esto perfectamente en mi tesis :) – Daff
Bien dicho. Aunque escribí un libro sobre RMI, en realidad no soy un defensor.Hace que las cosas parezcan simples que están muy lejos de ser simples, y hace las cosas difíciles que en realidad no son tan difíciles, p. '¿Debería volver a intentarlo?' – EJP
Ya no hay enlace para "Waldo et al": | –