Ensayo Sistemas Distribuidos: RMI



RMI

Introducción:
En este ensayo hablaremos sobre el método de invocación remoto o por su siglas en inglés RMI,, veremos las funcionalidades que tiene y las utilidades por las cuales es usado, además así sabremos como poder implementarlo en nuestros proyectos, y dentro de su estructura  veremos cómo funciona para Cliente-Servidor, además veremos cómo esta tecnología se enmarca en la idea de permitir colaboración entre objetos “Remotos” que permiten  su colaboración.

Desarrollo:
Para empezar definiremos lo que es RMI, es un mecanismo que nos permite llamar a los métodos remotos que están situados en una o varias máquinas virtuales de java por sus siglas en ingles JVM, comparten procesamientos a través de varios sistemas. Esto se refiere a que en vez de crear una instancia u objeto, puede llegar a que se ligue un objeto remoto con un representante local, el cual se conoce como stub. El stub es el que acepta los mensajes que se le envían y a su vez este lo envía al objeto remoto. Se invoca el método para que en los objetos remotos se envían de regreso al stub local.
La idea de esta arquitectura es tener un objeto cliente, donde podamos completar un requerimiento de datos,  este cliente a su vez prepara el requerimiento que envía a un objeto ubicado en un servidor


Esta arquitectura puede verse desde 4 capas:

Capa de aplicación: Cualquier aplicación que quiera que sus métodos estén disponibles para su acceso por clientes remotos debe declarar dichos métodos en una interfaz que extienda ‘java.rmi.Remote.’, cuando los objetos han sido implementados el objeto debe ser exportado.

Capa de resguardo o stub: Esta capa es la que interactúa directamente con la capa de aplicación. Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos la cual es dirigida a un objeto proxy al cual se le conoce como resguardo.

Capa de referencia remota: Esta capa es la que gestiona las referencias a los objetos de servicios remotos  y realiza las tareas específicas de la implementación con los objetos remotos. En esta capa se espera una conexión de tipo stream, desde la capa de transporte.

Capa de Transporte: Esta capa es la que se encarga de la conexión entre procesos, transmitiendo los datos que representa la llamada a la máquina remota de Java, el protocolo de transporte para RMI es JRMP (Java Remote Method Protocol), que solamente es “comprendido” por programas Java.

El cliente debe manipular objetos que están en el servidor, para esto el cliente debe tener qué puede hacer con estos objetos. Esto se expresa en una interfaz que reside en el cliente y el servidor. Para esto ambos lados deben implementar la interfaz Product.java.

Estas dos partes fundamentales son:
Servidor: Crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.
Aquí hay una capa que funciona para el servidor  la cual es la capa esqueleto que se utiliza para interactuar con la capa de resguardo del cliente.
En el lado del servidor debemos implementar la clase que en efecto efectúa la tarea del método.

Cliente: Obtiene una referencia a objetos remotos en el servidor, y los invoca.
Para que no haya problemas de seguridad, el programa cliente debería instalar un administrador de seguridad para controlar la actividad del stub cargado dinámicamente.
Para crear un objeto remoto, se define una interfaz, y el objeto remoto será una clase que implemente dicha interfaz.
Interfaz Remota

Una interfaz Java es una clase que se utiliza como plantilla para otras clases, hereda de la clase de java ‘remote’ la cual permite implementar la interfaz con el RMI

 Conclusión:

Puedo concluir que este tipo de arquitectura es muy similar al de Cliente-Servidor pues además de que el servidor trata de responderle al Cliente haciendo proceso, estos proceso se manejan en capaz sin embargo el RMI con la interfaz remota  es más útil pues al ser métodos que tienen objetos remotos, hace que sea más fácil de utilizar pues no tienes que preocuparte por pasar parámetros donde puede perderse información, además que no es difícil implementarlo.  

Referencias:
Universidad Técnica Federico Santa María (26/11/2017)
RMI: Remote Method Invocation (Invocación Remota de Métodos), obtenido de:

Universidad Autónoma de México (26/11/2017)
RMI de Java, obtenido de:

Enrique Medina Montenegro (2003)
PROGRAMACIÓN DISTRIBUIDA CON RMI, obtenido de:

M. L Liu (2004)
API de Java RMI, obtenido de:
Computación Distribuida  , Fundamentos y Aplicaciones

Comentarios

Entradas más populares de este blog

Ensayo SIstemas Distribuidos

Ensayo Cliente-Servidor

Ensayo Modelo OSI y TCP/IP