Middleware. Introducción: capas de middleware



Documentos relacionados
TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Universidad de Oviedo / Dpto. de Informática

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

5.1 Introducción a Servicios Web

Arquitectura de sistema de alta disponibilidad

Modelo de Objetos Distribuidos

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Introducción a la programación orientada a objetos

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

RMI [Remote Method Invocation]

Componentes de Integración entre Plataformas Información Detallada

Introducción a las Redes de Computadoras. Obligatorio

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA Características

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

Elementos requeridos para crearlos (ejemplo: el compilador)

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Versión final 8 de junio de 2009

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

SISTEMAS DISTRIBUIDOS

Curso de Java POO: Programación orientada a objetos

3.9 Patrón Distributed callback

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño

Oficina Online. Manual del administrador

Práctica sobre compartición de instancias remotas.

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

CAPÍTULO 3 Servidor de Modelo de Usuario

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Capítulo 5. Cliente-Servidor.

Arquitecturas cliente/servidor

Capitulo I. Introducción

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Arquitectura de Aplicaciones


ARQUITECTURAS CLIENTE/SERVIDOR

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

File System Distribuido - FSD

Entre los más conocidos editores con interfaz de desarrollo tenemos:

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Ley Orgánica de Protección de Datos

Arquitectura cliente/servidor

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

CAPITULO 8. Planeamiento, Arquitectura e Implementación

Introducción a las redes de computadores

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

INTRODUCCIÓN. El protocolo TCP, funciona en el nivel de transporte del modelo de referencia OSI, proporcionando un transporte fiable de datos.

Tema 4.1: - TRANSPORTE-

Estructura de Bases de datos. Leonardo Víquez Acuña

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

TELECOMUNICACIONES Y REDES

Manual LiveBox WEB ADMIN.

General Parallel File System

Apuestas de lotería on-line mediante teléfonos móviles

2.2.- Paradigmas de la POO

Información sobre seguridad

Unidad 1: Conceptos generales de Sistemas Operativos.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

SIEWEB. La intranet corporativa de SIE

Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica. Base de Datos I. Maestra: Martha E. Evangelista Salazar

Programación Orientada a Objetos con Java

SISTEMAS DE INFORMACIÓN III TEORÍA

Protocolo PPP PPP Protocolo de Internet de línea serie (SLIP)

4. Programación Paralela

Tema 4. Gestión de entrada/salida

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Tutorial BMS Server Studio UDP

Arquitectura cliente/servidor

Capas del Modelo ISO/OSI

GUÍA DE USUARIO DEL CORREO

SISTEMAS DE INFORMACIÓN II TEORÍA

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS

Infraestructura Tecnológica. Sesión 5: Arquitectura cliente-servidor

Sistemas de Información Introducción a los Sistemas de Información: El Modelo Cliente/Servidor

Sistemas de Operación II

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

TEMA 2: FUNCIONAMIENTO DE INTERNET.

Gestión de la Configuración

Sistemas Distribuidos Junio 2008

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Infraestructura Tecnológica. Sesión 1: Infraestructura de servidores

QUE ES COMLINE MENSAJES? QUE TIPO DE MENSAJES PROCESA COMLINE MENSAJES?

Generador de Proxy remoto JavaScript.

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Introducción a Spamina

Java Inicial (20 horas)

Capítulo V. Implementación

Práctica 5: Common Object Request Broker Architecture CORBA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Tema 1. Conceptos fundamentales de los Sistemas Operativos

CFGM. Servicios en red. Unidad 5 Servicio FTP. 2º SMR Servicios en Red

Transcripción:

Middleware ] Introducción ] Representación externa de datos y empaquetado ] Protocolos de petición respuesta ] Comunicación en grupo ] Comunicación entre objetos distribuidos ] Llamada a un procedimiento remoto ] Eventos y notificaciones ] Caso de estudio: Java RMI USAL-DIA Ampliación de Sistemas Operativos 3.1 Introducción: capas de middleware Aplicaciones, servicios RMI y RPC Protocolo petición-respuesta Empaquetado y representación externa de datos Capas de 0LGGOHZDUH UDP y TCP USAL-DIA Ampliación de Sistemas Operativos 3.2 1

Representación externa de datos y empaquetado (I) ] Aplanado de estructuras de datos \ Estructura de datos (programas en ejecución) Î Secuencia de bytes (mensajes) ] Problemas \ Estructuras con distintos tipos de datos primitivos \ Representación de números en coma flotante \ Códigos para representar caracteres (ASCII, Unicode) \ Ordenación de números enteros (big-endian, litte-endian) USAL-DIA Ampliación de Sistemas Operativos 3.3 Representación externa de datos y empaquetado (II) ] Posibilidades \ Los valores se convierte a un formato externo acordado antes de la transmisión y se revierten al formato local en la recepción \ Los valores se transmiten según el formato del emisor, junto con una indicación del formato utilizado, y el receptor los convierte si es necesario ] Representación externa de los datos \ Estándar acordado para la representación de estructuras de datos y valores primitivos ] Empaquetado (PDUVKDOOLQJ) \ Tomar una colección de ítemes de datos y ensamblarlos de un modo adecuado para la transmisión de un mensaje ] Desempaquetado (XQPDUVKDOOLQJ) \ Generar lo valores primitivos desde la representación de datos externa y reconstruir las estructuras de datos USAL-DIA Ampliación de Sistemas Operativos 3.4 2

Posibilidades de rep. ext. datos y empaquetado ] XDR \ external Data Representation \ RFC1832 \ Sun NFS ] CORBA CDR \ Common Data Representation \ Definido en CORBA 2.0 \ Object Management Group (OMG) ] Serialización de objetos en Java RMI \ Java Object Serializacion Specification USAL-DIA Ampliación de Sistemas Operativos 3.5 Tipos en CORBA CDR ] Puede representar todos los tipos de datos que se pueden utilizar como argumentos o como resultados en las invocaciones remotas de CORBA \ Tipos primitivos [ Short (16 bits), long (32 bits), unsigned short, unsigned long, float (32 bits), double (64 bits), char, boolean, octet (8 bits) y any \ Tipos compuestos 7LSRÃ VHTXHQFH VWULQJ DUUD\ VWUXFW HQXPHUDWHG XQLRQ 5HSUHVHQWDFLyQ longitud (unsigned long-entero largo sin signo-) seguida de los elementos en orden. longitud (unsigned long) seguida de los caracteres en orden (también puede tener caracteres anchos-2bytes-). elementos de la cadena en orden (no se especifica la longitud porque es fija). en el orden de declaración de los componentes. unsigned long (los valores son especificados por el orden declarado). etiqueta de tipo seguida por el miembro seleccionado. USAL-DIA Ampliación de Sistemas Operativos 3.6 3

Mensaje CDR CORBA 3RVLFLyQ HQODVHFXHQFLD GHE\WHV 0 3 4 7 8 11 12 15 16 19 20-23 24 27 4 bytes 5 "Pére" "z " 6 "Madr" id " 1934 1RWDVVREUH ODUHSUHVHQWDFLyQ /RQJLWXG GHOVWULQJ <<3pUH]>> /RQJLWXG GHOVWULQJ <<0DGULG >> 8QVLJQHGORQJ La forma aplanada representa una estructura 3HUVRQD con el valor: { <<Pérez>>, <<Madrid>>, 1934} USAL-DIA Ampliación de Sistemas Operativos 3.7 Empaquetado en CORBA: IDL ] Generación automática del empaquetado a partir de las especificaciones de los tipos de datos de los ítemes que tienen que ser transmitidos en un mensaje ] CORBA IDL (Interface Definition Language) struct Persona string nombre; string lugar; long año; }; ] Interfaz del compilador CORBA USAL-DIA Ampliación de Sistemas Operativos 3.8 4

Serialización de objetos en Java (I) ] En Java RMI, tanto los objetos como los datos primitivos pueden ser pasados como argumentos y resultados de la invocación de métodos ] Objeto = instancia de una clase Java public class Persona implements Serializable { private String nombre; private String lugar; private int año; public Persona(String unnombre, String unlugar, int unaño) { nombre = unnombre; lugar = unlugar; año = unaño; }; USAL-DIA Ampliación de Sistemas Operativos 3.9 Serialización de objetos en Java (II) ] Serialización \ Consiste en aplanar un objeto o un conjunto relacionado de objetos para obtener una forma lineal adecuada para ser almacenada en disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI ] Deserialización \ Consiste en restablecer el estado de un objeto o un conjunto de objetos desde su estado lineal USAL-DIA Ampliación de Sistemas Operativos 3.10 5

Serialización de objetos en Java (III) Persona p = new Persona( Pérez, Madrid, 1934); Persona 3 1934 Resultado simplificado 9DORUHVVHULDOL]DGRV Número de versión de 8-bytes int año 5 Pérez java.lang.string nombre: 6 Madrid java.lang.string lugar: ([SOLFDFLyQ 1RPEUH GHODFODVHQ~PHUR GHYHUVLyQ 1~PHURWLSR \QRPEUH GHODV YDULDEOHVGHLQVWDQFLD 9DORUHV GHODV YDULDEOHVGH LQVWDQFLD Serialización Crear una instancia de la clase ObjectOutputStream Invocar al método writeobject, pasando Persona como argumento Deserialización Crear una instancia de la clase ObjectInputStream Invocar al método readobject USAL-DIA Ampliación de Sistemas Operativos 3.11 Protocolo petición-respuesta (I) &OLHQWH 6HUYLGRU KD]2SHUDFLRQ (espera) (continuación) 0HQVDMH SHWLFLyQ 0HQVDMH UHVSXHVWD GDPH3HWLFLRQ ejecución del método sobre el objeto seleccionado HQYLD5HVSXHVWD USAL-DIA Ampliación de Sistemas Operativos 3.12 6

Protocolo petición-respuesta (II) SXEOLFÃE\WH>Ã@ÃKD]2SHUDFLRQ 5HPRWH2EMHFW5HI RÃLQWÃLG0HWRGRÃE\WH>Ã@ÃDUJXPHQWRV envía un mensaje de petición al objeto remoto y recibe la respuesta. Los argumentos especifican el objeto remoto, el método a invocar y los argumentos de ese método. SXEOLFÃE\WH>Ã@ÃGDPH3HWLFLRQÃ adquiere una petición del cliente a través del puerto del servidor. SXEOLFÃYRLGÃHQYLD5HVSXHVWDE\WH>Ã@ÃUHVSXHVWDÃ,QHW$GGUHVVÃKRVW&OLHQWHÃLQWÃSXHUWR&OLHQWH envía el mensaje de respuesta al cliente a su dirección de Internet y a su puerto. tipomensaje idpeticion referenciaobjeto idmetodo argumentos LQW 3HWLFLyQ 5HVSXHVWD LQW 5HPRWH2EMHFW5HI LQW R0HWKRG FDGHQD GHE\WHV USAL-DIA Ampliación de Sistemas Operativos 3.13 Modelo de fallos del protocolo petición-respuesta (I) ] Tiempo de espera límite ] Eliminación de mensajes de petición duplicados ] Pérdida de mensajes de respuesta ] Historial USAL-DIA Ampliación de Sistemas Operativos 3.14 7

Modelo de fallos del protocolo petición-respuesta (II) USAL-DIA Ampliación de Sistemas Operativos 3.15 Modelo de fallos: idempotencia ] Operación idempotente \ Operación que puede ser llevada a cabo repetidamente con el mismo efecto que si hubiera sido ejecutada exactamente una sola vez USAL-DIA Ampliación de Sistemas Operativos 3.16 8

Modelo de fallos: historial ] Historial o histórico \ Estructura que contiene el registro de los mensajes de respuesta que han sido transmitidos \ El propósito es permitir que el servidor pueda retransmitir los mensajes de respuesta cuando los clientes lo soliciten \ Problemas del coste de almacenamiento USAL-DIA Ampliación de Sistemas Operativos 3.17 Semánticas de invocación 0HGLGDVGHWROHUDQFLDDIDOORV 6HPiQWLFDV GHLQYRFDFLyQ 5HWUDQVPLVLyQGH PHQVDMHGHSHWLFLyQ )LOWUDGR GHGXSOLFDGRV 5HHMHFXFLyQGHOSURFHGLPLHQWR RUHWUDQVPLVLyQGHODUHVSXHVWD No No procede No procede 3XGLHUDVHU Sí No Reejecutar el procedimiento $OPHQRVXQDYH] Sí Sí Retransmitir respuesta &RPRPi[LPRXQDYH] USAL-DIA Ampliación de Sistemas Operativos 3.18 9

Protocolos de intercambio de RPC: R ] Protocolo de petición (R: UHTXHVW) ] P.ej. RPCs asíncronas ] Semántica pudiera ser USAL-DIA Ampliación de Sistemas Operativos 3.19 Protocolos de intercambio de RPC: RR ] Protocolo de petición-respuesta (RR: UHTXHVWUHSO\) ] Programación de WLPHRXWV y reintentos ] Semántica al menos una vez, si no se filtran los reintentos ] Semántica como máximo una vez si se filtran los reintentos USAL-DIA Ampliación de Sistemas Operativos 3.20 10

Protocolos de intercambio de RPC: RRA ] Protocolo de petición-respuesta (RRA: UHTXHVWUHSO\ DFNQRZOHGJHPHQW UHSO\) ] Semántica como máximo una vez ] Útil para gestión de historial USAL-DIA Ampliación de Sistemas Operativos 3.21 Comunicación en grupo: utilización ] Tolerancia a fallos basada en servicios replicados \ Ejecución de las mismas operaciones en todos los servidores, de forma que sean consistentes ] Búsqueda de los servidores de descubrimiento en redes espontáneas ] Mejores prestaciones basadas en datos replicados \ Gestión de actualizaciones ] Propagación de las notificaciones de eventos \ Descubrimiento de nuevos servicios (Jini) Operaciones de multidifusión: Multidifusión IP USAL-DIA Ampliación de Sistemas Operativos 3.22 11

Fiabilidad y orden en multidifusión ] Tolerancia a fallos basada en la replicación de servicios \ Todas las operaciones o ninguna Î fiabilidad total ] Búsqueda de los servidores de descubrimiento en redes espontáneas \ Alguna constestación Î fiabilidad 1 ] Mejores prestaciones mediante datos replicados \ No son necesarias todas las contestaciones Îfiabilidad m de n ] Propagación de las notificaciones de eventos \ Podría ser necesario el reparto ordenado de varias multidifusiones Tema 5: Coordinación y acuerdo entre procesos USAL-DIA Ampliación de Sistemas Operativos 3.23 Comunicación entre objetos distribuidos ] El modelo de objetos ] Objetos distribuidos ] El modelo de objetos distribuido ] Cuestiones de diseño para RMI ] Implementación de RMI ] Compactación automática de memoria USAL-DIA Ampliación de Sistemas Operativos 3.24 12

El modelo de objetos (I) ] Programas orientados a objeto (p. ej. Java, C++) \ Consta de conjuntos de objetos que interaccionan entre ellos \ Objeto = datos o atributos + métodos \ Comunicación entre objetos Î invocación de métodos pasándole argumentos y recibiendo resultados \ Posibilidad de que el lenguaje permita la definición de objetos en los que las variables de sus instancias estén accesibles de modo directo Î no permitido en sistemas distribuidos USAL-DIA Ampliación de Sistemas Operativos 3.25 El modelo de objetos (II) ] Referencia a objetos \ Se puede acceder a objetos mediante referencias de objetos \ Invocar métodos Î referencia a objetos + nombre del método + argumentos \ Las referencias a objetos puede ser asignadas a variables, pasadas como argumentos y devueltas como resultados de métodos ] Interfaces \ Definición de las signaturas de un conjunto de métodos sin especificar su implementación [ Tipos de sus argumentos [ Valores devueltos [ Excepciones \ Un objeto proporciona una interfaz particular si su clase contiene código que implementa los métodos de esa interfaz \ En Java una clase puede implementar varias interfaces y los métodos de una interfaz pueden ser implementados por cualquier clase USAL-DIA Ampliación de Sistemas Operativos 3.26 13

El modelo de objetos (II) ] Acciones \ Una acción se inicia en un objeto que invoca un método de otro objeto [ Puede cambiar el estado del receptor [ Pueden tener lugar más invocaciones sobre métodos de otros objetos ] Excepciones \ Forma limpia de tratar las condiciones de error sin complicar el código \ Cada cabecera de método lista explícitamente como excepciones las condiciones de error que pudiera encontrar, permitiendo a los usuarios del método tratar con ellas (WKURZFDWFK) ] Compactación automática de memoria USAL-DIA Ampliación de Sistemas Operativos 3.27 Objetos distribuidos \ Estado de un objeto = valores de sus variables de instancia \ Programa Î partes separadas = objetos \ Distribución física de objetos en un S.D Î extensión natural \ Arquitectura cliente servidor es el caso más normal \ RMI Î un cliente hace una petición que implica la invocación a un método de un objeto ubicado en otro nodo \ Cadenas de invocaciones Î los objetos en los servidores pueden ser clientes de objetos de otros servidores \ Encapsulación Î el estado de un objeto es sólo accesible para los métodos del objeto Î no es posible que los métodos no autorizados actúen sobre el estado de un objeto USAL-DIA Ampliación de Sistemas Operativos 3.28 14

El modelo de objetos distribuidos (I) ] Invocaciones de métodos remotas ] Invocaciones de métodos locales ] Objetos remotos: B,F A Invocación remota Invocación local B Invocación local C Invocación local E D Invocación remota F USAL-DIA Ampliación de Sistemas Operativos 3.29 El modelo de obj. dist. (II): Referencia a objetos remotos ] Referencia a objeto remoto: \ Identificador que puede usarse a lo largo de todo un sistema distribuido para referirse a un objeto remoto particular único ELWV ELWV ELWV ELWV dirección Internet número de puerto tiempo número de objeto interfaz de objeto remoto USAL-DIA Ampliación de Sistemas Operativos 3.30 15

El modelo de obj. dist. (III): Interfaces remotas ] La clase de un objeto remoto implementa los métodos de su interfaz remota ] Los objetos en otros procesos pueden invocar solamente los métodos que pertenezcan a su interfaz remota Objeto remoto Interfaz remota Datos m1 Implementación { m2 de los m3 métodos m4 m5 m6 ] CORBA IDL ] Interfaces Java USAL-DIA Ampliación de Sistemas Operativos 3.31 El modelo de objetos distribuidos (IV) ] Acciones en un sistema de objetos distribuido \ Se inicia mediante la invocación de un método \ Cuando una invocación cruza los límites de un proceso o un computado, se emplea RMI ] Compactación automática de memoria \ Cooperación entre el compactador automático de memoria local y un módulo adicional para posibilitar su funcionamiento distribuido ] Excepciones \ Fallos por [ Timeouts [ Propios del método remoto invocado USAL-DIA Ampliación de Sistemas Operativos 3.32 16

Cuestiones de diseño RMI (I) ] Semántica de la invocación RMI \ Pudiera ser \ Al menos una vez \ Cómo máximo una vez USAL-DIA Ampliación de Sistemas Operativos 3.33 Cuestiones de diseño RMI (II) ] Transparencia \ Ocultación del empaquetado \ Ocultación del paso de mensajes \ Invocación de método local y remoto idénticas \ Imposibilidad de distinguir fallo de red o fallo del proceso remoto, independientemente de la semántica utilizada Î recuperación de esta situación por los objetos invocantes \ Latencia de una invocación remota >> latencia de invocación local Î minimización de interacciones remotas USAL-DIA Ampliación de Sistemas Operativos 3.34 17

Implementación de RMI Objeto A Cliente Proxy para B Petición Servidor Esqueleto y distribuidor para la clase de B Objeto remoto B Respuesta Módulo de Módulo de referencia remota comunicación Módulo de comunicación Módulo de referencia remota USAL-DIA Ampliación de Sistemas Operativos 3.35 Implementación de RMI: Módulo de comunicación ] Realizan el protocolo de petición-respuesta ] Proporcionan una semántica de invocación ] En el servidor selecciona el distribuidor para la clase del objeto que se invoca, pasando su referencia local, que se obtiene del módulo de referencia remota en respuesta al identificador de objeto remoto en el mensaje de petición USAL-DIA Ampliación de Sistemas Operativos 3.36 18

Impl. de RMI: Módulo de referencia remota ] Traduce las referencias entre objetos locales y remotos, y crea las referencias a objetos remotos ] Tabla de objetos remotos Î correspondencia entre referencias a objetos locales en ese proceso y las referencias a objetos remotos \ Entradas por cada objeto remoto implementado por el proceso \ Una entrada para cada SUR[\ local ] Acciones \ Cuando se pasa un objeto remoto por primera vez, como argumento o resultado, se le pide al MRR que cree una referencia a un objeto remoto, que se añade a la tabla \ Cuando llega una referencia a un objeto remoto, en un mensaje de P o R, se le pide al MRR la referencia al objeto local correspondiente, que se referirá a un proxy o a un objeto remoto USAL-DIA Ampliación de Sistemas Operativos 3.37 Impl. de RMI: El software de RMI (I) ] Proxy \ Hace que la invocación al método remoto sea transparente para los clientes ocultando [ Detalles de referencia al objeto remoto [ Empaquetado de los argumentos [ Desempaquetado de los resultados [ Envío y recepción de los mensajes desde el cliente \ Hay uno por cada objeto remoto del que el cliente disponga de una referencia de objeto remoto [ Implementa los métodos de la interfaz remota del objeto al que representa USAL-DIA Ampliación de Sistemas Operativos 3.38 19

Impl. de RMI: El software de RMI (II) ] Distribuidor \ Cada servidor tiene un distribuidor para cada clase que represente a un objeto remoto \ Recibe el mensaje de petición desde el módulo de comunicación. [ LG0HWRGR Æ Selección del método apropiado del esqueleto [ Pasa el mensaje de petición al esqueleto ] Esqueleto \ Cada servidor tiene un esqueleto para cada clase que represente a un objeto remoto [ Implementa los métodos de la interfaz remota para Desempaqueta los argumentos del mensaje de petitición Invocar al método correspondiente con el objeto remoto Espera finalización Empaqueta el resultado, en un mensaje de respuesta USAL-DIA Ampliación de Sistemas Operativos 3.39 Impl. de RMI: Generación de las clase para ] Proxy ] Distribuidor ] Esqueleto ] Compilador de interfaces \ CORBA IDL ] Interfaces \ Por ejemplo en Java: rmic USAL-DIA Ampliación de Sistemas Operativos 3.40 20

Impl. de RMI: Programas cliente y servidor ] El programa servidor contiene: \ Clases [ Distribuidores [ Esqueletos [ Implementaciones de las clases de todos los objetos remotos a los que da soporte \ Sección de inicialización [ Método main en Java y C++ Creación de al menos uno de los objetos remotos Otros pueden ser creados a petición de los clientes Objeto/método factoría Registrar objetos remotos en un enlazador (binder) ] El programa cliente contiene: \ Clases de cada proxy para todos los objetos remotos que invoque \ Utilización de un enlazador para buscar las referencias a métodos remotos USAL-DIA Ampliación de Sistemas Operativos 3.41 Impl. de RMI: El enlazador (binder) ] Modo de obtener referencia a un objeto remoto para al menos uno de los objetos remotos alojados en el servidor ] Servicio separado que gestiona una tabla \ Nombre textual referencia a objeto remoto ] Los servidores registran sus objetos remotos mediante un nombre ] Los clientes buscan la referencia a objeto remoto por nombre USAL-DIA Ampliación de Sistemas Operativos 3.42 21

Impl. de RMI: Hilos del servidor ] Necesidad de que la ejecución de una invocación remota no retrase a otras ] Servidores multihilo \ Cada invocación remota Î un hilo ] Desarrollo adicional ] Control de las ejecuciones concurrentes USAL-DIA Ampliación de Sistemas Operativos 3.43 Impl. de RMI: Activación de objetos remotos (I) ] Ejemplo inetd Î lanzamiento bajo demanda ] Objeto remoto \ activo [ Disponible para su invocación en el interior de un proceso en ejecución \ pasivo [ No está activo actualmente pero puede activarse [ Consta de La implementación de sus métodos Su estado en forma empaquetada USAL-DIA Ampliación de Sistemas Operativos 3.44 22

Impl. de RMI: Activación de objetos remotos (II) ] Activación \ Creación de un objeto activo desde el objeto pasivo [ Nueva instancia de su clase [ Iniciación de sus variables de instancia desde el estado almacenado [ Un objeto pasivo puede activarse bajo demanda ] Un activador es responsable de \ Registrar los objetos pasivos que están disponibles para su activación [ Nombres de servidores + URL o nombre de archivo de objeto pasivo \ Arrancar procesos de servicio con nombre y activar los objetos remotos de su interior \ Mantener la pista de las ubicaciones de los servidores de los objetos remotos que ya han sido activados ] CORBA: repositorio de implementación ] Java RMI: activador en cada computador servidor USAL-DIA Ampliación de Sistemas Operativos 3.45 Impl. de RMI: Almacenes de objetos persistentes ] Objeto persistente \ Su vida se encuentra garantizada entre procesos de activación \ Gestionados por almacenes de objetos persistentes, que almacenan sus estado en forma empaquetada [ Servicio de objetos persistente CORBA [ Persistent Java ] Estrategia para decidir la desactivación de objetos USAL-DIA Ampliación de Sistemas Operativos 3.46 23

Impl. de RMI: Ubicación de objetos ELWV ELWV ELWV ELWV dirección Internet número de puerto tiempo número de objeto interfaz de objeto remoto ] Migración \ Distinto proceso \ Distinto nodo ] Servicio de localización USAL-DIA Ampliación de Sistemas Operativos 3.47 Compactación automática de memoria ] Recuperación de memoria cuando nadie tenga una referencia a un objeto remoto o local \ Información de creación/eliminación de proxys en clientes ] Concesiones en Jini USAL-DIA Ampliación de Sistemas Operativos 3.48 24

Llamada a procedimiento remoto Proceso cliente Proceso servidor Petición Procedimiento de Respuesta resguardo del cliente Programa cliente Módulo de Módulo de comunicación comunicación Procedimiento de resguardo del servidor Procedimiento de servicio Distribuidor USAL-DIA Ampliación de Sistemas Operativos 3.49 Sun RPC ] RFC 1831 ] Sistema de archivos en red Sun NFS ] Sun RPC = ONC RPC (Open Network Computing) ] Se proporciona como parte de sistemas UNIX ] UDP o TCP ] Semántica al menos una vez ] Posibilidad de EURDGFDVW ] Lenguaje de definición de interfaz: variante XDR ] Compilador de interfaces: rpcgen Î lenguaje C USAL-DIA Ampliación de Sistemas Operativos 3.50 25

Sun RPC: Lenguaje de definición de interfaz (I) ] Sun XDR ] Número de programa + número de versión en lugar de nombre de interfaz ] Número de programa Î autoridad central ] Definición de procedimiento Î signatura y número de procedimiento ] Sólo un parámetro de entrada ] Sólo un parámetro de salida USAL-DIA Ampliación de Sistemas Operativos 3.51 Sun RPC: Lenguaje de definición de interfaz (II) FRQVW0$; W\SHGHILQW,GHQWLILFDGRU$UFKLYR W\SHGHILQW$SXQWDGRU$UFKLYR W\SHGHILQW/RQJLWXG VWUXFW'DWRV ^ LQWORQJLWXG FKDU EXIHU>0$;@ ` VWUXFWDUJXPHQWRV(VFULEH ^,GHQWLILFDGRU$UFKLYR I $SXQWDGRU$UFKLYRSRVLFLyQ 'DWRVGDWRV ` VWUXFWDUJXPHQWRV/HH ^,GHQWLILFDGRU$UFKLYR I $SXQWDGRU$UFKLYRSRVLFLyQ /RQJLWXGORQJLWXG ` SURJUDP/(((6&5,%($5&+,92^ YHUVLRQ9(56,21^ YRLG(6&5,%(DUJXPHQWRV(VFULEH 'DWD/((DUJXPHQWRV/HH ` ` USAL-DIA Ampliación de Sistemas Operativos 3.52 26

Sun RPC: Compilador de interfaces ] rpcgen \ Procedimiento de resguardo del cliente (VWXE) \ Procedimiento main del servidor, el distribuidor y el procedimiento de resguardo del servidor (VWXE) \ Procedimientos de empaquetado y desempaquetado XDR para su empleo por el el distribuidor y los VWXEV de cliente y el servidor USAL-DIA Ampliación de Sistemas Operativos 3.53 Sun RPC: enlazado ] Enlazador de puerto (SRUWPDSSHU Î proceso portmap \ Arrancado en un número de puerto bien conocido de cada computador (/etc/services Î 111) \ Gestiona un tabla con (rpcinfo p) [ Número de programa [ Número de versión [ Número de puerto en uso USAL-DIA Ampliación de Sistemas Operativos 3.54 27

Sun RPC: autenticación ] Mensajes RPC con campos adicionales para información de autenticación entre cliente y servidor ] UNIX: uid + gid ] Construcción de mecanismos de control de accesos a partir de la información de autenticación ] Protocolos de autenticación \ Ninguno \ UNIX \ Clave compartida para firmar mensajes RPC \ Kerberos \ RFC 2203 USAL-DIA Ampliación de Sistemas Operativos 3.55 Eventos y notificaciones ] Un objeto puede reaccionar a un cambio que ocurre en otro objeto ] Paradigma publica-suscribe \ Publicación de eventos que se ofrecen para la observación por otros objetos Îanunciante \ Suscripción si se desea recibir algún tipo de evento Î registrar el interés por un tipo de evento Î subscriptor ] Notificaciones o anuncios \ Objetos que representan los eventos ] Características de S.D. Basados en eventos \ Heterogéneos \ Asíncronos USAL-DIA Ampliación de Sistemas Operativos 3.56 28

Sistema simple de una sala de contratación Computador del tratante Fuente externa Computador del tratante Tratante Notificación Notificación Tratante Notificación Proveedor de información Notificación Computador del tratante Tratante Notificación Notificación Notificación Proveedor de información Fuente externa Notificación Computador del tratante Notificación Notificación Tratante USAL-DIA Ampliación de Sistemas Operativos 3.57 Tipos de eventos ] Tipos ] Atributos \ Nombre o identificador \ Operación \ Parámetros \ Tiempo o número de secuencia USAL-DIA Ampliación de Sistemas Operativos 3.58 29

Objetos y notificación de eventos (I) Objeto de interés Servicio de eventos Suscriptor 1. Notificación Objeto de interés Observador Suscriptor 2. Notificación Notificación Objeto de interés Observador Suscriptor 3. Notificación USAL-DIA Ampliación de Sistemas Operativos 3.59 Objetos y notificación de eventos (II) ] El objeto de interés \ Experimenta cambios de estado, como resultado de las operaciones que se invocan sobre él ] Evento \ Aparece en un objeto de interés como resultado de la finalización de la ejecución de un método ] Notificación \ Objeto que contiene información sobre un evento ] Suscriptor \ Objeto que se ha suscrito a algún tipo de evento en otro objeto ] Objetos observadores \ Objeto que desacopla un objeto de interés de sus suscriptores ] Anunciantes \ Objeto que declara que generará notificaciones de tipos concretos de eventos USAL-DIA Ampliación de Sistemas Operativos 3.60 30

Semántica de reparto ] Multidifusión IP \ No hay garantías de que cualquier suscriptor reciba un mensaje de notificación concreto ] Multidifusión fiable ] Envío fiable a un servidor ] Multidifusión no fiable ] Recuperación de notificaciones perdidas desde el servidor USAL-DIA Ampliación de Sistemas Operativos 3.61 ] Encaminamiento Objetos observadores ] Filtrado de notificaciones ] Patrones de eventos \ Relación entre varios eventos ] Buzones de notificación USAL-DIA Ampliación de Sistemas Operativos 3.62 31