0% encontró este documento útil (0 votos)
129 vistas5 páginas

Llamadas a Procedimientos Remotos (RPC)

Este documento trata sobre las llamadas a procedimientos remotos (RPC). Explica que una RPC permite que un programa ejecute subrutinas en otro espacio de direcciones de forma remota sin que el programador codifique explícitamente la interacción. Describe brevemente la historia de las RPC, sus objetivos como simplificar el desarrollo de aplicaciones distribuidas y ocultar detalles de red. Finalmente, resume el proceso de una RPC indicando que el cliente envía una solicitud al servidor remoto, el servidor responde y la aplicación continúa.

Cargado por

ANDRES
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
129 vistas5 páginas

Llamadas a Procedimientos Remotos (RPC)

Este documento trata sobre las llamadas a procedimientos remotos (RPC). Explica que una RPC permite que un programa ejecute subrutinas en otro espacio de direcciones de forma remota sin que el programador codifique explícitamente la interacción. Describe brevemente la historia de las RPC, sus objetivos como simplificar el desarrollo de aplicaciones distribuidas y ocultar detalles de red. Finalmente, resume el proceso de una RPC indicando que el cliente envía una solicitud al servidor remoto, el servidor responde y la aplicación continúa.

Cargado por

ANDRES
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UTM.

MOREIRA PINARGOTE FREDDY ADRIAN 1


UNIVERSIDAD TECNICA DE MANABI
FACULTAD DE CIENCIAS INFORMATICAS
SISTEMAS DISTRIBUIDOS
SEXTO SEMESTRE PARALELO “A”

LLAMADA A PROCEDIMIENTO REMOTO


Resumen— El presente trabajo trata sobre llamadas a II. MARCO TEÓRICO


procedimientos remotos, donde se conocerá un poco de su
historia, un concepto claro de lo que es una llamada a A. Definición
procedimiento remoto, el proceso de una llamada a un ¿Qué es un RPC?
procedimiento remoto, donde también conoceremos los
objetivos de una RPC, características del Stub y por ultimo se En informática, una llamada a procedimiento
presentara un ejemplo de RPC. remoto es una comunicación entre procesos que
permite que un programa de ordenador para hacer
I. INTRODUCCIÓN
que una subrutina o procedimiento para ejecutar en
Como se sabe, un sistema distribuido es un otro espacio de direcciones sin que el programador
conjunto de computadoras conectadas en red que le codifica explícitamente los detalles de esta
dan la sensación al usuario de ser una sola interacción a distancia. Es decir, el programador
computadora. Este tipo de sistema brinda una serie escribe esencialmente el mismo código si la
de características tales como: compartición de subrutina es local para el programa en ejecución, o a
recursos, la concurrencia, alta escalabilidad, y distancia. Cuando el software en cuestión utiliza los
tolerancia a fallos. A pesar que agregar complejidad principios orientados a objetos, RPC se llama
al software y disminuir los niveles de seguridad, los invocación remota o la invocación de métodos
sistemas de procesamiento distribuidos brindan una remotos.
buena relación precio - desempeño y pueden
aumentar su tamaño de manera gradual al aumentar Muchas tecnologías diferentes se han utilizado
la carga de trabajo. para aplicar el concepto. [1]

RPC (Llamada a procedimiento remoto) es una


tecnología, tradicionalmente empleada en ambiente
UNIX, que permite el desarrollo de sistemas de
procesamiento distribuido basados en el paradigma
procedimental. Con el advenimiento de
implementaciones para plataforma Windows, así
como para Java, es posible pensar en RPC como un
mecanismo de integración de software heterogéneo.

El presente documento presenta las características


técnicas más importantes del mecanismo de
Llamadas a Procedimientos Remotos (RPC, Remote Proceso llamada a procedimiento remoto [5]
Procedure Calls), tal como su función, pase de
parámetros, protocolo de transporte etc. [11] B. Historia y Orígenes

La idea de tratar las operaciones de red como las


[1][2] Campodocs.com – Nola llamadas a procedimientos remotos se remonta por
[5] Sistemas-distribuidos-ist-ucpr.wikispaces.com
lo menos hasta la década de 1980 en los primeros
[11] Tamps.cinvestav.mx – Llamada a procedimientos remotos

Octubre 2014 – Febrero 2015


UTM. MOREIRA PINARGOTE FREDDY ADRIAN 2

documentos de ARPANET. Bruce Jay Nelson en el cliente no son posible


generalmente se le atribuye haber acuñado el
término. Uno de los primeros usos comerciales de  Procedimiento. Remoto (servidor) no tiene
RPC fue por Xerox con el nombre de "El Correo", acceso al espacio de direcciones del cliente /
en 1981 - La primera aplicación popular de la RPC imposibilidad de usar punteros.
en Unix era de Sun RPC, que se utiliza como base
para el Sistema de archivos de red. [2]  RPC impone un mayor nivel de
encapsulamiento
C. Objetivos de RPC
 Los parámetros para la llamada remota no
 Proporcionar un middleware que simplifique pueden pasarse por referencia (solo por valor).
el desarrollo de aplicaciones distribuidas
 Mayor sobrecarga en llamadas RPC
 Evitar que programador tenga que interactuar (transferencia por red, aplanamiento de datos,
directamente con el interfaz de Sockets etc.)

 Abstraer (ocultar) los detalles relativos a  En algunos entornos se limita el intercambio


la red de estructuras complejas, en otros se usan
métodos de aplanado/desaplanado [4]
 El Servidor ofrece procedimientos que el
cliente llama como si fueran procedimientos III. EL PASO DE MENSAJES
locales
Una RPC es iniciado por el cliente, que envía un
 Se busca ofrecer un entorno mensaje de solicitud a un servidor remoto conocido
de programación lo más similar posible a un para ejecutar un procedimiento especificado con los
entorno no distribuido. parámetros suministrados. El servidor remoto envía
una respuesta al cliente, y la aplicación continúa su
 El sistema RPC oculta los detalles de proceso. Mientras el servidor está procesando la
implementación de esas llamadas remotas llamada, el cliente se bloquea, a menos que el
Implementa la llamada remota mediante un cliente envía una solicitud asincrónica al servidor,
dialogo petición respuesta -- Mensaje de como una llamada XHTTP. Hay muchas variaciones
petición: identifica procedimiento llamado, y sutilezas en diversas implementaciones, lo que
contiene parámetros de la llamada -- Mensaje resulta en una variedad de diferentes protocolos
de respuesta: contiene valor/es devuelto/s se RPC. [6]
encarga de enviar/recibir mensajes para
Una diferencia importante entre las llamadas a
comunicar ambas partes se encarga de
procedimientos remotos y las llamadas locales es
gestionar los contenidos de esos mensajes
que las llamadas remotas pueden fallar debido a
(empaquetado y formateado de datos) [3]
problemas de red impredecibles. Además, los que
llaman por lo general deben hacer frente a estos
D. Diferencias con llamadas locales (LPC) fallos sin saber si el procedimiento remoto se
invocó en realidad. Procedimientos Idempotent se
 Punto clave: manejo de errores.
manejan fácilmente, pero lo suficientemente siguen
existiendo dificultades que el código para llamar a
 Con RPC pueden existir fallos en servidor
procedimientos remotos a menudo se limita a los
remoto o en la red. subsistemas de bajo nivel.
__________________________
 Acceso a variables globales y efectos laterales [3][4] Ecured,cu - crack_708 [6] Campodocs.com - Nola

Octubre 2014 – Febrero 2015


UTM. MOREIRA PINARGOTE FREDDY ADRIAN 3

Secuencia de eventos durante una RPC  El stub es quien proporciona transparencia en


la invocación del cliente
 El cliente llama al stub del cliente. La llamada
es una llamada de procedimiento local, con  El stub debe poseer llamadas con la misma
parámetros empujado en la pila de la forma declaración (forma) que el servidor
habitual.
 El cliente invoca las llamadas del stub “como
 El resguardo del cliente embala los si” fuese el servidor
parámetros en un mensaje y realiza una
llamada al sistema para enviar el mensaje.  El stub, a través de un protocolo RPC y con
Embalaje de los parámetros se denomina
unos mecanismos de aplanamiento, envía un
cálculo de referencias.
mensaje al extremo remoto solicitando la
 Sistema operativo local del cliente envía el “ejecución real” de la llamada
mensaje de la máquina cliente al servidor.
 El stub, a través de un protocolo RPC y con
 El sistema operativo local en el servidor pasa unos mecanismos de desaplanamiento, recibe
los paquetes entrantes al resguardo del un mensaje del extremo remoto y recupera el
servidor. “resultado” de la invocación.

 El resguardo del servidor desempaqueta los  El stub oculta los detalles de referencia del
parámetros del mensaje. Desembalaje de los objeto remoto. Es decir, debe saber en qué
parámetros se llama unmarshalling. dirección IP y en qué puerto hay que contactar
con el extremo remoto
 Por último, el resguardo del servidor llama al
procedimiento servidor. La respuesta traza los  Cada procedimiento que el cliente quiera
mismos pasos en la dirección inversa. [7] invocar a través de RPCs necesita su propio
stub. [9]
Mecanismos de contacto estándar

Para permitir que los diferentes servidores de IV. EJEMPLO DE RPC


acceso a los clientes, se han creado una serie de
sistemas RPC estandarizados. La mayoría de ellos A continuación describiremos un ejemplo de
utilizan un lenguaje de descripción de la interfaz invocación remota mediante RPC. Lo primero es
para que las distintas plataformas llaman la RPC. crear el fichero de interfaz que lo denominaremos
Los archivos de IDL a continuación, se pueden test.x:
utilizar para generar código de interfaz entre el program PROGRAMA_TEST {
cliente y el servidor. La herramienta más común version VERSION_TEST {
int TEST (int) = 1;
usada para esto es RPCGEN. [8]
} = 1;
} = 0x20000001;
Característica del Stub

La base del mecanismo RPC consiste en la


introducción de “representantes” que “hacen como
si” fuesen el cliente/servidor.
______________________
 En el lado cliente, el representante del [7] [8] Campodocs.com – Nola

servidor se denomina Stub (o Proxy) [9] Ecured,cu - crack_708

Este fichero especifica una única función llamada

Octubre 2014 – Febrero 2015


UTM. MOREIRA PINARGOTE FREDDY ADRIAN 4

TEST(), que acepta un parámetro entero y devuelve printf ("usage: %s server_host\n",


argv[0]);
otro entero. Todas las funciones declaradas tienen
exit (1);
un número de procedimiento que deberá ser }
diferente a 0. A su vez, el programa tendrá una host = argv[1];
versión (en nuestro caso 1) y un número de programa_test_1 (host);
programa (en nuestro caso 0x20000001). El exit (0);
}
compilador de interfaces generar una función con el
nombre test 1(), es decir, el nombre declarado en el La llamada clnt_create() crea un manejador de
fichero de especificación pero en minúscula, RPC para un programa y versión especificas en una
seguido de un guion bajo y el número de versión. maquina destino. Además es necesario especificar el
Para compilar el fichero de especificación: protocolo utilizado (TCP o UDP). También
rpcgen test.x
incluimos el código del servidor test server.c:

#include "test.h"
El compilador habrá generado tres nuevos int *
ficheros: test.h, test_svc.c y test_clnt.c. El fichero test_1_svc(int *argp, struct svc_req
test.h declara la función especificada, mientras que *rqstp)
test_svc test_clnt declaran los resguardos del {
servidor y cliente respectivamente. Será necesarios static int result;
/*
compilarlos junto con los clientes y servidores. * insert server code here
*/
A continuación mostramos el código del cliente 3result = *argp * 2;
test_client.c: return &result;
}
#include "test.h" A continuación se muestra el resumen de
void
comandos para compilar y enlazar el cliente y
programa_test_1(char *host)
{ servidor: [10]
CLIENT *clnt;
int *result_1; cc -o test_client test_client.cc
int test_1_arg = 10; test_clnt.cc
#ifndef DEBUG cc -o test_server test_server.cc
clnt = clnt_create (host, PROGRAMA_TEST, test_svc.cc
VERSION_TEST, "udp"); Ejecuta el servidor:
if (clnt == NULL) { ./test_server
clnt_pcreateerror (host); Ejecuta el cliente:
exit (1); ./test_client localhost
}
#endif /* DEBUG */
result_1 = test_1(&test_1_arg, clnt);
if (result_1 == (int *) NULL) {
clnt_perror (clnt, "call failed");
}
printf("Resultados: %d\n",*result_1);
#ifndef DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
______________________
char *host;
[10] Ingeniería Informática
- Universidad Rey Juan Carlos
if (argc < 2) {

Octubre 2014 – Febrero 2015


UTM. MOREIRA PINARGOTE FREDDY ADRIAN 5

CONCLUSIONES
En este trabajo se ha visto representada las
características técnicas más importantes del
mecanismo de Llamadas a Procedimientos Remotos
(RPC, Remote Procedure Calls), específicamente de
la implementación ONC, así también como su
funcionamiento de una RPC.

Como ya se pudo observar una RPC es una Mi nombre es FREDDY ADRIAN MOREIRA PINARGOTE
tecnología, que tradicionalmente es empleada en soy estudiante de la asignatura de Sistemas Distribuidos,
actualmente curso el Sexto semestre en la Carrera de
ambiente UNIX, que permite el desarrollo de INGENIERIA EN SISTEMAS, FACULTAD DE CIENCIAS
sistemas de procesamiento distribuido basados en el INFORMÁTICAS DE LA UNIVERSIDAD TÉCNICA DE
paradigma procedimental. Con el advenimiento de MANABÍ. Soy una persona responsable, organizada y me
implementaciones para plataforma Windows, así gusta trabajar en equipo.
como para Java, se concibe a RPC como una Mis metas son convertirme en un profesional de la Ingeniería
tecnología de integración entre plataformas en Sistemas Informáticos, para poder dar soluciones a los
disimiles de hardware y software. problemas que puedan presentarse en nuestra vida social.

Tengo como objetivo ayudar a la comunidad universitaria, y


principalmente mente a mis padres, ya que gracias a Dios y al
REFERENCIAS
esfuerzo de ellos cumpliré mis sueños y ser un nuevo
[1][2][6][7][8] HTTP://CAMPODOCS.COM/ARTICULOS- profesional de la República del Ecuador.
ENCICLOPEDICOS/ARTICLE_92561.HTML

[5] HTTP://SISTEMAS-DISTRIBUIDOS-IST- Traducido por:


UCPR.WIKISPACES.COM/7.1.2+LLAMADAS+A+PROCEDIMI Moreira Pinargote Freddy Adrian
Universidad Técnica de Manabí
ENTOS+REMOTOS Facultad de Ciencias Informáticas
[3][4] Sistemas Distribuidos
Sexto paralelo A
[9]HTTP://WWW.ECURED.CU/INDEX.PHP/LLAMADA_A_PROCEDI
2014
MIENTO_REMOTO

[10]HTTPS://WWW.GOOGLE.COM.EC/URL?
SA=T&RCT=J&Q=&ESRC=S&SOURCE=WEB&CD=1&CAD=RJA
&UACT=8&VED=0CB4QFJAA&URL=HTTP%3A%2F
%2FDOCENCIA.ETSIT.URJC.ES%2FMOODLE
%2FPLUGINFILE.PHP%2F14544%2FMOD_FOLDER
%2FCONTENT%2F1%2FPRACTICASRPC%2FINTRORPC.PDF
%3FFORCEDOWNLOAD%3D1&EI=PC23VOA-
N4I4GGTVSIG4AG&USG=AFQJCNEPMASPHOKTRQEWISSO
L3F1KQYHTQ&SIG2=UL_FSBZSRZB5MPFO_F7YFW
[11]HTTP://WWW.TAMPS.CINVESTAV.MX/~VJSOSA/CLASES/SD/R
PC_NOTAS.PDF

Autor

Octubre 2014 – Febrero 2015

También podría gustarte