Descripción general de la arquitectura RMI

En la arquitectura de aplicaciones distribuidas, siempre es necesaria la comunicación entre dos aplicaciones diferentes. En aplicaciones basadas en Java, una aplicación se comunica con otra aplicación remota / diferente que se ejecuta en otro lugar mediante un mecanismo llamado arquitectura RMI.

RMI significa Invocación de método remoto. Es una API proporcionada por java que permite que un objeto que reside en una JVM (Máquina virtual Java) acceda o invoque un objeto que se ejecuta en otra JVM. La otra JVM podría estar en la misma máquina o máquina remota. Esta es una característica interesante porque en las aplicaciones en tiempo real es muy fácil para las aplicaciones Java comunicarse directamente entre sí sin ningún mecanismo de comunicación externo. Además, siempre es necesaria una comunicación segura entre aplicaciones basadas en la arquitectura de aplicaciones distribuidas.

Diseño RMI

Antes de entrar en la arquitectura detallada, entenderemos el diseño básico de la arquitectura RMI.

  • La API RMI se proporciona en el paquete java.rmi. Presentemos dos términos para comprender la arquitectura de diseño de RMI. Primero es el cliente; la JVM que llamará a un objeto remoto y el segundo es el servidor; la JVM que contiene el objeto remoto. Entonces, el cliente llamará al servidor, en este caso en el objeto para invocar el método.
  • El servidor devolverá la referencia del objeto al cliente. El problema aquí son los objetos, es decir, local y remoto aparecerán como un objeto local en el servidor. No habrá diferenciación entre los dos. La sintaxis de los métodos de ambos objetos también es la misma. Por lo tanto, la JVM del servidor actúa como la JVM normal sin conocer ningún objeto, ya sea local o remoto.
  • El mismo objeto puede ser tanto un servidor como un cliente. Se obtiene la referencia de objetos remotos y se usa como si fuera un objeto local. La infraestructura RMI es responsable de encontrar el objeto remoto, interceptar la llamada al método y procesar la solicitud remota de forma remota. El cliente invoca métodos en el objeto solo después de obtener una referencia a un objeto remoto.

Arquitectura RMI

A continuación se muestra el diagrama de la arquitectura RMI de una manera simple. En Internet, encontrará varias formas de la misma arquitectura, pero tenemos una simple que ayudará a explicarla mejor.

Comencemos conectando puntos desde una perspectiva de diseño con un diagrama de arquitectura.

La aplicación cliente y la aplicación servidor son las JVM respectivas de la máquina cliente y la máquina servidor. En la aplicación RMI escribimos dos programas respectivamente; el programa cliente que reside en el cliente y el programa servidor que reside en la máquina del servidor.

Capa de aplicación:

Esta capa son los sistemas reales, es decir, el cliente y el servidor que participan en la comunicación. El programa Java en el lado del cliente se comunica con el programa Java en el lado del servidor.

Talón:

Desde la introducción del diseño, tenemos objetos de cliente; En la arquitectura RMI se conoce como Stub. Es un objeto que reside en la máquina del cliente y actúa como un proxy para el objeto remoto. Es como una puerta de enlace para el programa cliente.

El código auxiliar tiene los mismos métodos que un objeto remoto. Cuando el cliente llama al objeto de código auxiliar, el código auxiliar reenvía esta solicitud a un objeto remoto (Esqueleto) a través de la infraestructura RMI que luego se ejecuta en el servidor.

Stub Realiza los siguientes eventos: -

  1. Inicia la conexión con JVM remota,
  2. Escribe y transmite parámetros (Marshals) a JVM remota,
  3. Espera el resultado,
  4. Lee (Unmarshalls) el resultado devuelto,
  5. Pase el resultado recibido a la persona que llama.

Esqueleto:

El objeto de servidor que reside en una máquina de servidor se conoce como Skeleton. Stub se comunica con la aplicación del servidor con la ayuda de un objeto Skeleton intermedio.

La responsabilidad del objeto esqueleto es enviar parámetros a la implementación del método y enviar los valores devueltos al cliente.

Esqueleto Realiza los siguientes eventos: -

  1. Lee el parámetro pasado por el cliente,
  2. Invoca el método en el objeto remoto real,
  3. Transmitir / pasar el resultado a la persona que llama.

Stub / capa de esqueleto:

  • La capa Stub / Skeleton es responsable de interceptar las llamadas realizadas por el cliente y redirigir estas llamadas al objeto remoto. Esta capa también se llama como capa de proxy. Stub y Skeleton son los servidores proxy para cliente y servidor. Los objetos Stub y Skeleton son como una interfaz entre una aplicación y el resto del sistema RMI.
  • El propósito de esta capa es transferir datos a la capa de referencia remota mediante la serialización de objetos. Este proceso de convertir datos / objetos en flujo de bytes se conoce como Marshalling y lo inverso se conoce como Unmarshalling. La clasificación se realiza cuando se solicita el objeto del servidor y la clasificación se realiza cuando se recibe la referencia de datos / objeto del servidor.

Capa de referencia remota:

  • La capa proxy está conectada al mecanismo RMI a través de la capa de referencia remota. Esta capa es responsable de la comunicación y transferencia de objetos entre el cliente y el servidor. La semántica de invocación de la conexión RMI está definida y soportada por esta capa.
  • La capa de referencia remota es responsable de mantener la sesión durante la llamada al método. es decir, gestiona las referencias hechas por el cliente al objeto del servidor remoto. Esta capa también es responsable de manejar objetos duplicados.

Capa de transporte:

La capa de transporte es responsable de establecer la comunicación entre las dos máquinas. Esta capa utiliza el protocolo TCP / IP estándar para la conexión. El transporte real de datos se realiza a través de esta capa. Esta capa es parte de la capa de referencia remota.

Conclusión

  • La Invocación de método remoto (RMI) es una API muy útil proporcionada en JAVA que ayuda en la comunicación entre dos JVM diferentes. Permite que un objeto invoque un método en un objeto que reside en otro espacio de direcciones.
  • Proporciona una forma segura para que las aplicaciones se comuniquen entre sí. Logra esta funcionalidad por medio de los conceptos Stub (objeto de llamada del cliente) y Skeleton (objeto remoto que reside en el servidor).
  • RMI se utiliza para construir aplicaciones distribuidas. Conserva el tipo de seguridad. La arquitectura RMI minimiza la complejidad de la aplicación en una arquitectura distribuida.

Artículos recomendados

Esta ha sido una guía para la arquitectura RMI. Aquí discutimos el diseño de RMI y la arquitectura en detalle con un diagrama de bloques apropiado. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Arquitectura del almacén de datos
  2. ¿Qué es el protocolo TCP?
  3. ¿Qué es el software de escritorio?
  4. Preguntas de la entrevista de CCNA