Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Llamada a
Procedimientos
Remotos (RPC)
PROFESOR
Ing. Christopher Crespo Len Msc.
Qu es una llamada a
procedimientos remotos?
Este mtodo consiste en que los programas llamen a procedimientos
o RPC?
localizados en otras mquinas (manteniendo el enfoque cliente - servidor).
Maquina
El Proceso que realiza la Maquina
A llamada se Suspende B
El STUB lo bloquea
5El programador desarrolla sus aplicaciones de forma convencional con una serie de
procedimientos bien definidos.
Funcionamiento de un RPC
1 2
Un proceso Un proceso Y
X ejecuta el
realiza la El proceso X procedimiento,
llamada y enva el obtiene el
empaqueta mensaje y resultado, lo
los espera el encapsula en
argumentos resultado un mensaje de
en respuesta y se
un mensaje enva al
proceso x
Maquina Maquina
A B
1 4 Ejecuta
Inicia con la llamada Resultado Procedimiento
Suma(3, 4) 8 Remoto (suma)
Fin de la llamada
2 Suma = 7 3
STUB Cliente Convierte la Entrada
5
7 STUB Servidor
Prepara Entrada
6
Convierte Salida
Elementos Bsicos en el
Diseo de un RPC
Existen 4 elementos bsicos para disear e implementar un RPC:
Funciones:
Generar un procedimiento STUB del cliente para corresponder a cada
procedimiento de la interfaz.
Generar un proceso STUB del servidor.
Generar las operaciones empaquetamiento marshalling y
desempaquetamiento unmarshalling en cada procedimiento STUB.
Generar los procedimientos de servicio de la definicin de la interfaz
(para lo cual fue definida).
Ejemplo de un RPC con
RMI Java Hola Mundo package ejemplo.hola;
import java.rmi.Remote;
import java.rmi.RemoteException; Hola.java
public interface Hola extends Remote {
Cliente.java String diHola() throws RemoteException;
}
package ejemplo.hola; package ejemplo.hola;
import java.rmi.registry.Registry; Servidor.java
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry; import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Cliente { public class Servidor implements Hola{
public Servidor() {}
private Cliente() {} public String diHola(){
return "Hola, mundo";
public static void main(String[] args){ }
public static void main(String args[]){
String host = (args.length < 1) ? null : args[0]; try {
try { Servidor obj = new Servidor();
Registry registro = LocateRegistry.getRegistry(host); Hola stub = (Hola) UnicastRemoteObject.exportObject(obj, 0);
Hola stub = (Hola) registro.lookup("Hola");
String respuesta = stub.diHola(); // Liga los datos (stub) del objeto remoto en el registro
System.out.println("respuesta: " + respuesta); Registry registro = LocateRegistry.getRegistry();
} catch (Exception e) { registro.bind("Hola",stub);
System.err.println("Exception del cliente: " + e.toString()); System.err.println("Servidor listo");
e.printStackTrace(); } catch (Exception e) {
} System.err.println("Excepcin del servidor: " + e.toString());
} e.printStackTrace();
} } } }
2. Transferencia de
Parmetros
La comunicacin con RPC en los sistemas distribuidos se da mediante transferencia de
mensajes con paso de parmetros a travs de arquitecturas diferentes (hardware y
software) lo que implica diferentes formatos de representacin de nmeros y
caracteres.
Solucin:
Prohibir el pase de parmetros por referencias en RPC.
Copiar los datos reales en el mensaje (paso de parmetros por valor).
Ir pasando los datos a medida que el servidor lo requiera.
Solucin:
Dividir sucesivamente las estructuras hasta alcanzar tipos de datos bsicos, fciles de
reconocer por cualquier mquina.
3. Enlace Dinmico
Permite localizar a los servidores que ejecutan las llamadas a procedimientos remotos
(RCP). Esta es una de las funciones del suplente (STUB) del cliente.
Existe un servidor de nombres o enlazador dinmico donde cada servidor
registra todos los procedimientos o servicios que ofrece junto con su direccin. Por
ejemplo si se utiliza TCP/IP se registra: el protocolo, la direccin IP y el puerto que
se encuentra escuchando.
Si un cliente requiere ejecutar un RCP busca en el servidor de nombres la
direccin del servidor que ofrece el servicio.
El servidor de nombres enva al cliente la direccin del proceso del servidor que
ofrece un determinado servicio.
Servidor de
Localizan al servidor.
Empaquetan los parmetros y construyen los
mensajes.
Envan el mensaje al servidor.
Espera la recepcin del mensaje y devuelven los
resultados.
Se basan en una librera de funciones RPC para las
tareas ms habituales.
Protocolos RPC
En los protocolos En el protocolo estndar
orientados a la conexin de propsito general
Se establece una conexin entre cliente
y servidor.
Todo el trfico en ambas direcciones
La utilizacin del protocolo estndar IP
utiliza esa conexin. (o UDP, integrado a IP) posee las
Se maneja a un nivel inferior mediante
siguientes ventajas:
el software que soporta la conexin. El protocolo ya fue diseado, lo que
Es muy til para redes de rea amplia o
ahorra trabajo.
extendida (WAN).
Se dispone de muchas
Es desventajoso en redes de rea local
"Cuanto menos
compartes,
menos poder tienes"
Isaac Mao