Invocación Remota de Métodos (RMI) y Tecnologías Relacionadas

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 13,84 KB

Invocación Remota de Métodos (RMI)

¿Qué es y para qué sirve?

La Invocación Remota de Métodos (RMI) es una tecnología de Java que permite la comunicación entre servidores en aplicaciones distribuidas. Facilita la invocación de métodos de objetos que residen en diferentes máquinas virtuales Java (JVM), incluso en redes distintas. Para otras tecnologías de comunicación, se utilizan CORBA o SOAP.

Características:

  • Fácil uso en la programación.
  • Con RMI, un programa Java puede exportar un objeto que estará accesible en la red.

Pasos para la Invocación del RMI:

  1. Encapsulado de los parámetros.
  2. Invocación del método (cliente/servidor).
  3. Serialización del valor de retorno y envío al cliente.
  4. Recepción de la respuesta por parte del cliente.

Arquitectura RMI:

  • Primera capa: Aplicación (implementación real Cliente/Servidor).
  • Segunda capa: Proxy o stub-skeleton (encapsula al objeto remoto, identifica el objeto remoto y su interfaz).
  • Tercera capa: Referencia remota (manejo de la semántica de las invocaciones remotas).
  • Cuarta capa: Transporte (conexiones y manejo del transporte de datos entre máquinas).

Elementos de una Aplicación RMI:

  • Cliente: Obtiene objetos remotos en el servidor.
  • Servidor: Crea objetos remotos.

Construcción de un RMI:

  1. Escribir el código del servidor RMI y del cliente.
  2. Definir las funciones de la clase remota como interfaz remota.
  3. Implementar la clase remota y el servidor.
  4. Escribir un programa cliente que use el servidor remoto.
  5. Compilar el código cliente y servidor.
  6. Iniciar el registro RMI y del servidor.

Conceptos de Java

IDL (Interface Definition Language): Lenguaje de Definición de Interfaces.

  • Clase: Agrupación de datos (variables o campos) y funciones (métodos) que operan sobre esos datos.
  • Herencia: Creación de nuevas clases basadas en clases existentes, reutilización de código, herencia de variables y métodos.
  • Package: Agrupación de clases relacionadas que deben estar en un mismo directorio.

Variables:

  • Primitivos: Entero y Punto flotante.
  • Referencia: Arrays y Objetos.
  • Globales o miembros de clase.
  • Locales.

Tipos de Variables:

Boolean, Char, Byte, Short, Int, Float, Double.

Tipos de Operadores:

+=, -=, *=, /=, %=

Sintaxis:

Op1 += Op2 es equivalente a Op1 = Op1 + Op2

Operador instanceof:

Permite saber si un objeto pertenece o no a una determinada clase.

Bloque try {…} catch {…} finally {…}:

  • Gestión de errores.
  • Exception: Error o condición anormal durante la ejecución del programa (Fatales y Recuperables).
  • Try: Vigila una situación anormal.
  • Catch: Se hace cargo de la situación y decide qué hacer.
  • Finally: Opcional, se ejecuta sea cual sea el tipo de error.

Encapsulamiento:

Clases públicas o como packages, variables y métodos: Public, Private, Protected, Package.

Constructor:

Método que se llama automáticamente cada vez que se crea un objeto de una clase. Su nombre es el mismo que el de la clase y no tiene valor de retorno ni void.

Bibliotecas Java:

  • Lang: Bajo nivel.
  • Util: Arrays, sets.
  • Text: Texto y formateo.
  • Math: Cálculo de precisión arbitraria.
  • Io: E/S de streams de bytes.
  • Net: Red.
  • RMI: Invocación de métodos remotos.

Sistemas Distribuidos

Ejemplos:

  • Napster: Intercambio de ficheros MP3.
  • UseNet: Copia de ficheros entre ordenadores.

Estilos Arquitectónicos de SD:

  • Componentes Lógicos: Unidad modular y sustituible. Define interfaces requeridas y ofrecidas entre componentes lógicos.
  • Conectores: Mediadores de comunicación y coordinación.

Arquitectura:

  • Capas: Componentes lógicos organizados en capas.
  • Orientada a componentes: Cada objeto representa un componente lógico, invocaciones RPC.
  • Orientada a datos: Sistemas de ficheros, aplicaciones web.
  • Orientada a eventos: Componentes se comunican a una base de datos.

Tipos de Arquitecturas:

  • Centralizadas: Interrelación entre componentes.
  • Cliente/Servidor: Cliente hace peticiones de servicio y Servidor provee un servicio.

Aplicaciones C-S:

  • Aplicación de correo vía web.
  • DNS resolución de nombres.
  • Buscadores.

API (Application Programming Interface):

Conjunto de funciones y programas de llamada que permiten la comunicación entre clientes y servidores.

Middleware:

Interfaces y protocolos estándares de comunicación. Servicios: autenticación en red, llamada a procedimientos remotos, ficheros distribuidos.

Java Networking Package

  • java.net Package: Provee aplicaciones para desarrollar aplicaciones con usos de red.
  • ServerSocket: Funciones básicas del servidor.
  • Socket: Cliente.
  • MulticastSocket: Multidifusión de aplicaciones.
  • DatagramPacket: Protocolos de datagramas (no se garantiza la entrega).

Sockets Java

Sockets: Sistemas de comunicación entre procesos de diferentes máquinas de una red. Punto de comunicación por el cual se emite y recibe información.

RPC (Remote Procedure Call)

  • Tecnología usada en ambiente Linux.
  • Basado en procedimientos.

Generalidades:

  • Una llamada a un procedimiento es un método para transferir el control de una parte del programa a otra.
  • Con un retorno del control a la primera.
  • Pase de argumentos.
  • Retorno de resultados.
  • La función se encuentra alojada en otro sistema.
  • Cae en la capa de transporte, aplicación y presentación del modelo OSI.
  • Se maneja un Servidor de RPC donde participa el cliente y el servidor.
  • Llamada al sistema mediante NFS.

XML-RPC

Protocolo basado en HTTP y XML que usa mensajes RPC

 - Primer mecanismo de invocación de procedimientos remotos vía XML.

 - Usa HTTP para pasar información de un cliente al servidor. El cliente especifica los procedimientos con XML request y el servidor devuelve un valor con XML responde.

ARQUITECTURA DE XML-RPC:

Parser es un sistema que realiza una solicitud(cliente) y un parser que atiende (servidor).


XML se basa en 2 escenarios:

Glue Code: Conecta módulos dispares y Un mismo programa puede tener implementaciones de cliente y servidor.

Publicación de servicios: Cualquier cliente puede usar el servicio cuando XML-RPC este en la web. y Tiene un control del servidor pero no necesariamente del cliente.

ESTRUCTURA XML-RPC: Tres partes para definir una llamada completa a un procedimiento remoto:  

MODELO DE DATOS XML-RPC: es el conjunto de tipos de datos usados para pasar parámetros, devolver resultados y generar códigos de error (faults).

ESTRUCTURA XML-RPC Request: es un HTTP POST request que contiene información del método y los parámetros.

ESTRUCTURA XML-RPC Response: es un HTTP response que contiene el valor resultante o información de error, según el caso.

XML_RPC REQUEST son una combinación de headers.

CADA XML_RPC REQUEST tiene un elemento raíz llamado methodCall

LOS XML-RPC RESPONSES son  parecidos a los requests pero con: el elemento methodCall se reemplaza por el elemento methodResponse y desaparece el elemento methodName.

MODELO DE DATOS

Tipos de datos: Int - Doublé - Boolean - String - dateTime - base64

XML-RPC vs SOAP: Su diferencia es su complejidad.

  • XML-RPC diseñado para ser sencillo.
  • SOAP. Esta diseñado dar un soporte completo y minucioso de todo tipo de servicios web.

IMPLEMENTACIONES XML-RPC: Existen diversas implementaciones para diversos ambientes y lenguajes para ahorrar  labores como:

Configuraciones de parser  - Cuestiones de seguridad - Integración a servidores de páginas - Y otros detalles secundarios

IMPLEMENTACIONES:

 - XMLRPC APACHE ( http://ws.apache.org/xmlrpc/ ) para el lenguaje "Java" .

 - FRONTIER::RPC ( http://www.cpan.org ) para el lenguaje "Perl" .

 - XMLRPC-PHP ( http://sourceforge.net/projects/phpxmlrpc/ ) para el lenguaje "PHP" .

 - XMLRPC-PYTHON ( http://www.pythonware.com/products/xmlrpc/ ) para el lenguaje "Python" .

 - XMLRPC-C ( http://xmlrpc-c.sourceforge.net/ ) para los lenguajes "C" y "C++" .

 - XMLRPC-ASP ( http://aspxmlrpc.sourceforge.net ) para el lenguaje "COM/VBasic" .

CURL EN PHP: Conecta y comunica diferentes tipos de servidores.

TIPOS DE PROTOCOLO: http, https, ftp, telnet.

TRANSMISIÓN DE INFORMACIÓN POR HTTP: POST y GET - Formularios HTTP - Proxies - Cookies - Autentificación por Credencial

AJAX: Es una técnica de desarrollo web que genera aplicaciones web interactivas combinando:

  • XHTML y CSS para la presentación de información
  • Document Object Model (DOM) para visualizar dinámicamente e interactuar con la información presentada
  • XML, XSLT para intercambiar y manipular datos
      • JSON y JSON-RPC pueden ser alternativas a XML/XSLT
  • XMLHttpRequest para recuperar datos asíncronamente
  • Javascript como nexo de unión de todas estas tecnologías

LOS NAVEGADORES que soportan las tecnologías mencionadas son las plataformas en las que se ejecutan las aplicaciones AJAX (Firefox, Iexplorer, Opera, Konqueror y Safari)

SISTEMA DISTRIBUIDO: Colección de computadoras independientes, que es de manera transparente a sus usuarios como un sistema único y coherente

RECURSOS COMPARTIDOS Y LA WEB: Recursos de Hardware - Compartir el uso de la información - Servicios:Motores de búsqueda, Soporte para computadoras de tipo corporativo y Servicio vs Servidor (nodo o proceso)

APLICACIONES DISTRIBUIDAS: Un solo sistema - Uno o varios subsistemas autónomos - Una colección de procesadores, procesamiento en paralelo, incremento en rendimiento, tolerancia a fallas

POR QUÉ DISTRIBUCIÓN: Compartir información y servicios - Agregar mejores componentes: Disponibilidad, Fiabilidad, Tolerancia a fallos, Rendimiento y Escalabilidad

METAS DE UN SD: Recursos accesibles - Transparencia en la distribución - Escalabilidad - Distribución

RECURSOS ACCESIBLES: Nomenclatura - Control de acceso - Seguridad - Disponibilidad - Rendimiento

TIPOS DE TRANSPARENCIA

  • Acceso: oculta diferencias en la representación de datos
  • Localización: oculta donde el recurso se encuentra
  • Migración: oculta recurso que podría ser removido de donde se encuentra
  • Re direccionamiento: oculta donde puede ser movido donde se encuentra mientras esta en uso
  • Replicación: oculta recurso replicado
  • Concurrencia: oculta recurso compartido por varios usuarios
  • Fallos: oculta falla y recuperación de un recurso
  • Persistencia: oculta si un recurso (software) está en la memoria de discos

VENTAJAS SD VS CENTRALIZADOS: Economía - Velocidad - Distribución inherente - Confiabilidad

VENTAJAS SD VS COMPUTADORAS PERSONALES ASILADAS: Datos compartidos (DB común usuarios) - Dispositivos compartidos (usuarios comparten periféricos común) - Concurrencia - Flexible

DESVENTAJAS SD

  • Software: poco
  • Redes: satura o causa otros problemas
  • Seguridad

LIMITACIONES QUE CREAN PROBLEMAS TECNOLÓGICOS EN LOS SD

  • No existe memoria global (cada nodo tiene memoria local)
  • Establecer estado global es complejo
  • No se asegura tiempo global

Entradas relacionadas: