Download Middleware Introducción: capas de middleware

Document related concepts
no text concepts found
Transcript
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
Capas de
0LGGOHZDUH
Protocolo petición-respuesta
Empaquetado y representación externa de datos
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
USAL-DIA
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.
Ampliación de Sistemas Operativos 3.6
3
Mensaje CDR CORBA
3RVLFLyQ HQODVHFXHQFLD
4 bytes
GHE\WHV
5
0–3
4–7
8–11
12–15
16–19
20-23
24–27
1RWDVVREUH
ODUHSUHVHQWDFLyQ
/RQJLWXG GHOVWULQJ
"Pére"
"z___"
<<3pUH]>>
6
"Madr"
/RQJLWXG GHOVWULQJ
<<0DGULG¶>>
”id__"
1934
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);
Resultado simplificado
([SOLFDFLyQ
9DORUHVVHULDOL]DGRV
1RPEUH GHODFODVHQ~PHUR
GHYHUVLyQ
Persona Número de versión de 8-bytes
3
int año
1934
5 Pérez
java.lang.String
nombre:
java.lang.String
lugar:
1~PHURWLSR \QRPEUH GHODV
YDULDEOHVGHLQVWDQFLD
9DORUHV GHODV YDULDEOHVGH
LQVWDQFLD
6 Madrid
•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
KD]2SHUDFLRQ
6HUYLGRU
0HQVDMH
SHWLFLyQ
(espera)
0HQVDMH
UHVSXHVWD
GDPH3HWLFLRQ
ejecución del
método sobre
el objeto
seleccionado
HQYLD5HVSXHVWD
(continuación)
USAL-DIA
Ampliación de Sistemas Operativos 3.12
6
Protocolo petición-respuesta (II)
SXEOLFE\WH>@KD]2SHUDFLRQ 5HPRWH2EMHFW5HI RLQWLG0HWRGRE\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.
SXEOLFE\WH>@GDPH3HWLFLRQ
adquiere una petición del cliente a través del puerto del servidor.
SXEOLFYRLGHQYLD5HVSXHVWDE\WH>@UHVSXHVWD,QHW$GGUHVVKRVW&OLHQWHLQWSXHUWR&OLHQWH
envía el mensaje de respuesta al cliente a su dirección de Internet y a su puerto.
tipoMensaje
idPeticion
referenciaObjeto
idMetodo
argumentos
USAL-DIA
LQW 3HWLFLyQ 5HVSXHVWD
LQW
5HPRWH2EMHFW5HI
LQW R0HWKRG
FDGHQD GHE\WHV
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
6HPiQWLFDV
GHLQYRFDFLyQ
0HGLGDVGHWROHUDQFLDDIDOORV
5HWUDQVPLVLyQGH
)LOWUDGR
PHQVDMHGHSHWLFLyQ GHGXSOLFDGRV
No
No procede
Sí
No
Sí
Sí
USAL-DIA
5HHMHFXFLyQGHOSURFHGLPLHQWR
RUHWUDQVPLVLyQGHODUHVSXHVWD
3XGLHUDVHU
No procede
Reejecutar el procedimiento $OPHQRVXQDYH]
Retransmitir respuesta
&RPRPi[LPRXQDYH]
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
ión
c ac
Invo
l
loca
Invocación
remota
B
A
C
Invocación
Invocación
remota
local
Invocación
local
USAL-DIA
E
F
D
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
dirección
Internet
número
de puerto
USAL-DIA
ELWV
tiempo
ELWV
número de
objeto
interfaz de
objeto remoto
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
Datos
Interfaz
remota
{
m1
m2
m3
Implementación
de los
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
Servidor
Cliente
Proxy
Objeto A para B
Esqueleto y
distribuidor
para la clase
de B
Petición
Objeto
remoto B
Respuesta
Módulo de
Módulo de
referencia remota comunicación
USAL-DIA
Módulo de
comunicación
Módulo de
referencia remota
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
dirección
Internet
número
de puerto
ELWV
tiempo
ELWV
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
resguardo del
cliente
Programa
cliente
Respuesta
Módulo de
comunicación
Módulo de
comunicación
USAL-DIA
Procedimiento de
resguardo del
servidor
Procedimiento
de servicio
Distribuidor
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
`
USAL-DIA
VWUXFWDUJXPHQWRV/HH ^
,GHQWLILFDGRU$UFKLYR I
$SXQWDGRU$UFKLYRSRVLFLyQ
/RQJLWXGORQJLWXG
`
SURJUDP/(((6&5,%($5&+,92^
YHUVLRQ9(56,21^
YRLG(6&5,%(DUJXPHQWRV(VFULEH 'DWD/((DUJXPHQWRV/HH ` ` 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
Fuente
externa
Computador del tratante
Tratante
Computador del tratante
Notificación
Notificación
Notificación
Proveedor de
información Notificación
Notificación
Tratante
Notificación
Notificación
Computador del tratante
Computador del tratante
Notificación
Proveedor de
información
Notificación
Notificación
Tratante
Tratante
Fuente
externa
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)
Servicio de eventos
Suscriptor
Objeto de interés
1.
Notificación
Objeto de interés
2.
Objeto de interés
Suscriptor
Observador
Notificación
Notificación
Observador
3.
Suscriptor
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
Objetos observadores
] Encaminamiento
] 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