Llamadas a Procedimientos Remotos
…
send(msg)
…
receive(rpy)
…
receive(msg)
…
send(rpy)
Paso de mensajes (visión de bajo nivel)
…
…
x=buscar(1556)
…
int buscar(int cod)
{
…
…
return val;
}
Llamadas a procedimientos remotos (más alto nivel) Comodidad
Cliente
Cliente
Servidor
Servidor
(Gp:) ¿?
msg
rpy
(Gp:) ¿?
Llamadas a Procedimientos Remotos
Remote Procedure Call: RPC.
Evolución:
Propuesto por Birrel y Nelson en 1985.
Sun RPC es la base para varios servicios actuales (NFS o NIS).
Llegaron a su culminación en 1990 con DCE (Distributed Computing Environment) de OSF.
Han evolucionado hacia orientación a objetos: invocación de métodos remotos (CORBA, RMI).
Funcionamiento General de RPC
Cliente:
El proceso que realiza una la llamada a una función.
Dicha llamada empaqueta los argumentos en un mensaje y se los envía a otro proceso.
Queda la espera del resultado.
Servidor:
Se recibe un mensaje consistente en varios argumentos.
Los argumentos son usados para llamar una función en el servidor.
El resultado de la función se empaqueta en un mensaje que se retransmite al cliente.
Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia).
Elementos Necesarios
Código cliente.
Código del servidor.
Formato de representación.
Definición del interfaz.
Localización del servidor.
Semánticas de fallo.
…
…
x=buscar(1556)
…
int buscar(int cod)
{
…
…
return val;
}
Cliente
Servidor
Código Cliente/Código Servidor
Las funciones de abstracción de una llamada RPC a intercambio de mensajes se denominan resguardos (stubs).
SISTEMA CLIENTE
CÓDIGO DE LA APLICACIÓN
PREPARA
ENTRADA
CONVIERTE
SALIDA
INICIO
LLAMADA
FIN
LLAMADA
BIBLIOT.
EJECUCIÓN
RPC
ENVÍA
ENTRADA
RECIBE
SALIDA
RESGUARDO
CLIENTE
1
2
8
9
5
3
PROCEDIMIENTOS
EJECUTA
PROCEDIMIENTO
REMOTO
SISTEMA SERVIDOR
RECIBE
Y PASA
RESGUARDO
SERVIDOR
PREPARA
SALIDA
TRANSMITE
SALIDA
CONVIERTE
ENTRADA
BIBLIOT.
EJECUCIÓN
RPC
4
6
7
Resguardos (stubs)
Se generan automáticamente por el software de RPC en base a la interfaz del servicio.
Son independientes de la implementación que se haga del cliente y del servidor. Sólo dependen de la interfaz.
Tareas que realizan:
Localizan al servidor.
Empaquetan los parámetros y construyen los mensajes.
Envían el mensaje al servidor.
Espera la recepción del mensaje y devuelven los resultados.
Se basan en una librería de funciones RPC para las tareas más habituales.
Formato de Representación
Una de las funciones de los resguardos es empaquetar los parámetros en un mensaje: aplanamiento (marshalling).
Problemas en la representación de los datos
Servidor y cliente pueden ejecutar en máquinas con arquitecturas distintas.
XDR (external data representation) es un estándar que define la representación de tipos de datos.
Pasos de parámetros (entrada/salida):
Problemas con los punteros: Una dirección sólo tiene sentido en un espacio de direcciones.
Definición de Interfaces: IDL
IDL (Interface Definition Language) es un lenguaje de representación de interfaces:
Hay muchas variantes de IDL:
Integrado con un lenguaje de programación (Cedar, Argus).
Específico para describir las interfaces (RPC de Sun y RPC de DCE).
Define procedimientos y argumentos (No la implementación).
Se usa habitualmente para generar de forma automática los resguardos (stubs).
Server ServidorTickets
{
procedure void reset();
procedure int getTicket(in string ident);
procedure bool isValid(in int ticket);
}
Página siguiente |