lunes, 13 de noviembre de 2017

Introducción al RMI - Java

   


RMI significa Invocación remota de métodos . Es un mecanismo que permite que un objeto que reside en un sistema (JVM) acceda / invoque un objeto que se ejecuta en otra JVM.

RMI se usa para crear aplicaciones distribuidas; proporciona comunicación remota entre programas de Java. Se proporciona en el paquete java.rmi.

Arquitectura de una aplicación RMI

En una aplicación de RMI, escribimos dos programas, un programa de servidor (reside en el servidor) y un programa de cliente (reside en el cliente).

  • Dentro del programa del servidor, se crea un objeto remoto y la referencia de ese objeto está disponible para el cliente (usando el registro).
  • El programa cliente solicita los objetos remotos en el servidor e intenta invocar sus métodos.

El siguiente diagrama muestra la arquitectura de una aplicación RMI.


Arquitectura de una aplicación RMI


Veamos ahora los componentes de esta arquitectura.

  • Capa de transporte : Esta capa conecta el cliente y el servidor. Administra la conexión existente y también establece nuevas conexiones.
  • Stub : un stub es una representación (proxy) del objeto remoto en el cliente. Reside en el sistema del cliente; actúa como una puerta de entrada para el programa del cliente.
  • Skeleton (Esqueleto): este es el objeto que reside en el lado del servidor. el apéndice se comunica con este esqueleto para pasar la solicitud al objeto remoto.
  • RRL (capa de referencia remota) : es la capa que gestiona las referencias hechas por el cliente al objeto remoto.

Trabajo de una aplicación RMI

Los siguientes puntos resumen cómo funciona una aplicación RMI:

  • Cuando el cliente realiza una llamada al objeto remoto, es recibido por el código auxiliar que finalmente pasa esta solicitud al RRL.
  • Cuando el RRL del lado del cliente recibe la solicitud, invoca un método llamado invoke () del objeto remoteRef . Pasa la solicitud al RRL en el lado del servidor.
  • El RRL en el lado del servidor pasa la solicitud al Skeleton (proxy en el servidor) que finalmente invoca el objeto requerido en el servidor.
  • El resultado se transmite al cliente.

Marshalling y Unmarshalling

Cada vez que un cliente invoca un método que acepta parámetros en un objeto remoto, los parámetros se agrupan en un mensaje antes de enviarse a través de la red. Estos parámetros pueden ser de tipo u objetos primitivos. En el caso del tipo primitivo, los parámetros se juntan y se le agrega un encabezado. En caso de que los parámetros sean objetos, se serializan. Este proceso se conoce como clasificación .

En el lado del servidor, los parámetros empaquetados se desagregan y luego se invoca el método requerido. Este proceso se conoce como descalificación.

Registro de RMI

El registro RMI es un espacio de nombres en el que se colocan todos los objetos del servidor. Cada vez que el servidor crea un objeto, lo registra con el RMIregistry (utilizando los métodos bind () o reBind () ). Estos se registran usando un nombre único conocido como nombre de enlace .

Para invocar un objeto remoto, el cliente necesita una referencia de ese objeto. En ese momento, el cliente obtiene el objeto del registro usando su nombre de enlace (usando el método lookup () ).

La siguiente ilustración explica todo el proceso:

Registro de RMI

Objetivos de RMI

Los siguientes son los objetivos de RMI:
  • Para minimizar la complejidad de la aplicación.
  • Para preservar la seguridad del tipo.
  • Recolección de basura distribuida.
  • Minimice la diferencia entre trabajar con objetos locales y remotos.








Cesar GI

About Cesar GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.