Sei sulla pagina 1di 8

1.

INTRODUCCION REMOTE PROCEDURE CALL (RPC)


UTILIDAD El RPC (del ingls Remote Procedure Call, Llamada a Procedimiento Remoto) e s un protocolo que permite a un programa de ordenador ejecutar cdigo en otra mquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tena que estar pendiente de las comunicaciones, estando stas encapsuladas dentro de las RPC. Las RPC son muy utilizadas dentro del paradigma cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o funcin y enviando ste de vuelta el resultado de dicha operacin al cliente. Llamada Remota de Procedimiento (o RPC, acrnimo de Remote Procedure Call) es una tecnologa de comunicacin entre procesos que permite a un programa de ordenador llamar un procedimiento en otro espacio direccionamiento (generalmente en otro ordenador, conectado por una red). El desarrollador no se preocupa con detalles de implementacin de esa interaccin remota: del punto de vista del cdigo, la llamada se asemeja a llamadas de procedimientos locales. RPC es una tecnologa popular para la implementacin del modelo cliente-servidor de computacin distribuida. Una llamada de procedimiento remoto es iniciada por el cliente enviando un mensaje para un servidor remoto para ejecutar un procedimiento especfico. Una respuesta es retornada al cliente. Una diferencia importante entre llamadas de procedimiento remotas y llamadas de procedimiento locales es que, en el primer caso, la llamada puede fallar por problemas de la red. En ese caso, no hay ni an garantizaba que el procedimiento fue invocado. ORIGENES La idea de RPC fecha de 1976, cuando fue descrito en el RFC 707. Uno de los primeros usos comerciales de la tecnologa fue hecha por la Xerox en el "Courier", de 1981. La primera implementacin popular para Unix fue el Sun RPC (actualmente llamado ONC RPC), usado como base del Network File System y que an es usada en diversas plataformas. Otra implementacin pionera en Unix fue el Network Computing System (NCS) de la Apollo Computer, que posteriormente fue usada como fundacin del DCE/RPC en el Distributed Computing Environment (DCE). Una dcada despus la Microsoft adopt el DCE/RPC como base para su propia implementacin de RPC, MSRPC, a DCOM fue implementada con base en ese sistema. An en el mismo periodo de la dcada de 1990, el ILU de la Xerox PARC y el CORBA ofrecan otro paradigma de RPC basado en objetos distribuidos, con mecanismos de herencia. De forma anloga, actualmente se utiliza XML como lenguaje de descripcin de interfaz y HTTP como protocolo de red para formar servicios web, cuyas implementaciones incluyen SOAP y XML-RPC. El Modelo RPC El modelo de Llamada Remota de Procedimiento es similar al modelo de llamadas locales de procedimientos, en el cual la rutina que invoca el procedimiento coloca los argumentos en un rea de memoria bien conocida y transfiere el control para el procedimiento en ejecucin, que lee los argumentos y los procesa. En algn momento, la rutina retoma el control, extrayendo el resultado de la ejecucin de un rea bien conocida de la memoria. Despus de eso, la rutina prosigue con la ejecucin normal.

En el modelo RPC, el proceso de invocacin ocurre de manera similar. Una Thread es responsable por el control de dos procesos: invocador y servidor. El proceso invocador primero manda un mensaje para el proceso servidor y aguarda (bloquea) un mensaje de respuesta. El mensaje de invocacin contiene los parmetros del procedimiento y el mensaje de respuesta contiene el resultado de la ejecucin del procedimiento. Una vez que el mensaje de respuesta es recibida, los resultados de la ejecucin del procedimiento son recolectados y la ejecucin del invocador prosigue. Del lado del servidor, un proceso permanece en espera hasta la llegada de un mensaje de invocacin. Cuando un mensaje de invocacin es recibida, el servidor extrae los parmetros, los procesa y produce los resultados, que son enviados en el mensaje de respuesta. El servidor, entonces, vuelve a esperar por un nuevo mensaje de invocacin. En ese modelo, slo uno de los dos procesos permanece activo, en un dato instante de tiempo. Sin embargo, ese modelo sirve slo de ilustracin. El protocolo ONC RPC no hace restricciones a las implementaciones que permitan competencia entre esos procesos. Por ejemplo, una implementacin podra optar por llamadas asncronas, que permitiran al cliente continuar con el trabajo til, mientras estuviera aguardando el mensaje de respuesta. Una llamada remota de procedimiento difiere de las llamadas locales en algunos puntos: 1. Tratamiento de errores: fallos del servidor o de la red deben ser tratadas. 2. Variabais globales y efectos colaterales: Una vez que el servidor no posee acceso al espacio de direcciones del cliente, argumentos protegidos no pueden ser pasados como variabais globales oretornados. 3. Desempeo: llamadas remotas generalmente operan las velocidades inferiores en una o ms rdenes de grandeza en relacin a las llamadas locales. 4. Autenticacin: una vez que llamadas remotas de procedimiento pueden ser transportadas en redes sin seguridad, autenticacin puede ser necesario. De esa forma, aun habiendo diversas

herramientas que generan automticamente el cliente y el servidor, los protocolos necesitan ser desarrollados cuidadosamente. SEMNTICA DE TRANSPORTE El protocolo RPC puede ser implementado sobre diferentes tipos de protocolos de transporte, una vez que es indiferente la manera de como un mensaje es transmitido entre los procesos. Es importante destacar que el protocolo RPC no implementa ninguna forma de confiabilidad y que la aplicacin necesita tomar cuidados en cuanto al tipo de protocolo sobre el cual RPC opera. Si se trate de un protocolo confiable, como TCP, las preocupaciones con confiabilidad ya son resueltas. Por otro lado, si la capa de transporte sea no-confiable, como UDP, mecanismos de timeout, retransmisin y deteccin de duplicas deben ser implementados, una vez que esos servicios no son provenidos por RPC. Debido a la independencia de la capa de transporte, el protocolo RPC no modifica la semntica de las llamadas remotas, ni sus requisitos de ejecucin. La semntica puede ser inferida a partir de la capa de transporte en uso. Por ejemplo, considere el caso en que RPC opera sobre una capa de transporte no-confiable, como UDP. Si una aplicacin retransmite mensajes de invocacin RPC, despus de timeouts, y no recibe respuestas, no puede inferir el nmero de veces en que el procedimiento fue ejecutado. Si un mensaje es recibido, ella puede inferir que el procedimiento fue ejecutado, por lo menos, una vez. El servidor puede efectuar el control del nmero de ejecuciones, simplemente grabando el nmero del ltimo procedimiento ejecutado con xito, evitando as que ejecute varias veces la misma llamada. Por otro lado, cuando RPC opera sobre una capa de transporte confiable, como TCP, la aplicacin puede inferir, a partir de un mensaje de respuesta, que el procedimiento fue ejecutado exactamente una vez. Sin embargo, si ningn mensaje de repuesta es recibido, la aplicacin no puede asumir que el procedimiento no fue ejecutado. Perciba que, an usando un protocolo orientado a conexiones las aplicaciones an requieren timeouts para identificar fallos del servidor. Hay, an, muchas otras posibilidades de transporte adems de datagramas y protocolos orientados la conexin. Por ejemplo, protocolos de consulta-respuesta como VMTP puede ser usado por TCP. Limitaciones Diferentes implementaciones de llamada de procedimiento remoto acostumbran ser incompatibles entre s, aunque existan excepciones. Por eso, el uso de una determinada implementacin, probablemente, resultar en la dependencia con el proveedor de la implementacin. Esa incompatibilidad entre implementaciones se muestra tambin en la disponibilidad de de funcionalidades, en el soporte la diferentes protocolos de red y diferentes sistemas de archivo. La mayora de las implementaciones no soporta P2P y o interaccin asncrona entre cliente y servidor (por definicin, la llamada remota corresponde a una llamada local del punto de vista de la aplicacin, bloqueando de la misma forma). La comunicacin sncrona implica en la disponibilidad de constante tanto del cliente cunto del servidor. INSTITUCIONES QUE SUPERVISAN O HAN ESTABLECIDO ESTANDARES ONC/RPC DE Sun CORBA estndar RPC independiente de plataforma XML-RPC

DCOM RPC para Windows WCF RMI El modelo cliente-servidor en sistemas operativos autnomos As como el modelo cliente-servidor se trata habitualmente en trminos de sistemas frontales y posteriores conectados a una red, puede aplicarse adems al diseo arquitectural de la mayora de sistemas operativos modernos. Por ejemplo, Windows NT de Microsoft implanta el modelo cliente-servidor como mtodo estndar de interaccin entre el usuario y el sistema operativo. El proceso servidor consiste en un ncleo en segundo trmino que trabaja con funciones de bajo nivel, como la planificacin de tareas y la sincronizacin de procesos. El sistema frontal constituye la interfaz de usuario, el sistema de archivos y la aplicacin que ejecuta el usuario. Esta estrategia proporciona un enfoque modular de los sistemas operativos. Por ejemplo, permite la conexin a un sistema de archivos DOS, Windows u OS/2, segn las necesidades o preferencias. El ncleo posterior no depende de un sistema operativo concreto, ya que posee una interfaz comn a travs de la que ofrece sus servicios. IMPLANTACIN DE APLICACIONES CLIENTE-SERVIDOR En un entorno distribuido de red, el objetivo es proporcionar datos de forma compartida a todos los usuarios de la organizacin. Los datos almacenados en numerosos sistemas diferentes se hacen accesibles a los clientes, de forma que idealmente adoptan el aspecto de una nica base de datos lgica. La realizacin de un entorno compartido de datos engloba normalmente las siguientes funciones: Medidas de seguridad necesarias para el control del acceso a los datos. Medidas de integridad, requeridas para asegurar que las transacciones se realizan o no en funcin de su correccin. Medidas de concurrencia y disponibilidad, necesarias para permitir a los usuarios acceder y actualizar los datos. Necesidad de seguridad y recuperabilidad de los datos, mediante copias de seguridad y utilidades de tolerancia a fallos. Se debe realizar cada una de estas funciones si se trata de compartir datos entre muchos usuarios en la organizacin. Considrense las siguientes situaciones: Qu clientes realizan una simple lectura de los datos en un servidor, y cules realizan lectura y escritura? Si dos usuarios acceden a los mismos datos de forma simultnea y uno de ellos efecta modificaciones sobre aqullos, debera obtener el otro usuario una actualizacin? Esto es factible? Cuando varios usuarios manipulan los mismos datos, cul es la operacin de escritura que debe tener prioridad? Las soluciones a estos problemas se encuentran realizadas en la mayora de los sistemas cliente-servidor, aunque la distribucin de los datos entre un grupo numeroso de servidores dentro de una empresa plantea problemas insuperables de logstica que hacen impracticable en muchos sistemas el acceso en tiempo real a los mismos datos por varios usuarios de forma simultnea. Los mecanismos de bloqueo pueden impedir el acceso de un usuario a un bloque de

registros hasta que otro usuario haya finalizado la realizacin de cambios, si bien esta solucin introduce sus propios problemas. Por ejemplo, dentro de un entorno sensible al tiempo, esperar que otro usuario libere un bloque de registros es impracticable. Una serie de actualizaciones parciales puede ayudar al servidor a mantener una traza de las modificaciones efectuadas. Si existe un grupo numeroso de usuarios que trabajan con el mismo bloque de datos, se necesitan mtodos para que los clientes sepan cundo otro usuario ha modificado los datos. Existen dos tcnicas: Los clientes comprueban peridicamente con el servidor si los datos ubicados en su memoria se han modificado por otro usuario. Este mtodo crea un trfico excesivo en la red. El servidor enva actualizaciones a los clientes cuando los datos a los que stos tienen acceso se modifican por uno de ellos. Los servidores deben proporcionar acceso a los datos paro tambin preocuparse de la concurrencia en dicho acceso. En los sistemas distribuidos, estos problemas se multiplican si existen bases de datos interdependientes sobre varios sistemas. Pueden utilizarse varios mtodos para mantener sincronizados los sistemas, aunque esto puede aadir retardos. Qu sucede si uno de los servidores sufre una cada durante una operacin de escritura? La informacin que contiene dicho servidor debe actualizarse durante el proceso de arranque del mismo. Adems, las transacciones incompletas deben volver atrs, no nicamente en el servidor afectado por la cada, sino en todos aquellos que hubieran recibido la transaccin para mantener la sincronizacin. Mtodos de conexin y comunicaciones El mecanismo actual de transmisin de la informacin entre sistemas cliente y servidor en entornos distribuidos multiproveedor se denomina middleware. Existe una amplia variedad de estos productos, como por ejemplo sistemas de mensajera de almacenamiento y reenvo y llamadas a procedimientos remotos (RPCs, remote procedure cals): Una llamada a un procedimiento remoto (RPC) consiste en una llamada que conecta dos computadoras a travs de una conexin sncrona. Esta conexin se mantiene para asegurar la integridad de los datos entre los dos sistemas en tiempo real. Este tipo de conexin es esencial en aplicaciones tales como las transacciones bancarias. En un sistema de paso de mensajes, la informacin y las peticiones se envan entre las computadoras de la misma forma que los mensajes de correo electrnico entre usuarios. El mensaje se almacena y reenva a lo largo de todo un trayecto hasta su destino. Aunque los sistemas de mensajes no son adecuados para la actualizacin de bases de datos en tiempo real, proporcionan servicios de lectura de informacin eficientes. La Arquitectura de sistemas abiertos de Windows (WOSA, Windows Open System Architecture) de Microsoft constituye una estrategia de construccin de middleware directamente dentro de los sistemas operativos de Microsoft, de modo tal que la informacin fluya ms fcilmente a travs de una compaa. Los sistemas clientes pueden conectarse a diversos servicios posteriores, tales como bases de datos, comunicaciones, aplicaciones y servidores de correo. En Windows NT de Microsoft, las RPCs se incorporan directamente dentro del sistema operativo. IBM y otros fabricantes cuentan con el Entorno de informtica distribuida (DCE, Distributed Computing Environment) de la Fundacin de software abierto (OSF, Open Software Foundation) para apoyar la integracin de aplicaciones distribuidas multiproveedor. DCE proporciona un extenso conjunto de servicios a travs de los cuales las aplicaciones pueden comunicarse y los usuarios pueden conectarse a los diversos servicios de datos disponibles en una red corporativa.

LLAMADA A PROCEDIMIENTO REMOTO (RPC) La comunicacin entre procesos (IPC, Interprocess Communications) es una tcnica que usan los programas y procesos que se ejecutan sobre sistemas operativos multitarea o sobre dos computadores en red. Hay dos tipos de IPCs: Llamada a procedimiento local (LPC, Local Procedure Call). Las LPCs se usan en sistemas operativos multitarea para permitir la ejecucin concurrente de tareas que se pasan informacin. As pueden compartir espacios de memoria, sincronizar tareas y enviar mensajes de una a otra. Llamada a procedimiento remoto (RPC, Remote Procedure Call). La RPC es similar a la LPC, pero trabaja sobre redes. Las primeras RPCs aparecieron en las computadoras de Sun Microsystems, Inc. y Hewlett-Packard, y se ejecutaban bajo el sistema operativo UNIX.

Con las IPCs y las RPCs, los programas pueden beneficiarse de procesos manejados por otros programas o computadoras. La informtica de cliente-servidor usa las RPCs como un mecanismo de comunicacin entre sistemas, junto con otras tcnicas como la mensajera. Los clientes realizan algunas tareas por s mismos, pero delegan en servidores el acceso a archivos posteriores (backend). Las RPCs proporcionan el mecanismo de comunicacin para que el cliente requiera los servicios del servidor posterior (back-end), como se ve en la Figura 3.7. Si se piensa en una aplicacin cliente-servidor como en un programa que ha sido escindido, el servidor podra realizar la parte de acceso a los datos porque est ms prximo a ellos y el cliente podra ejecutar la parte frontal (front-end) de presentar los datos e interactuar con el usuario. Desde este punto de vista, se puede considerar a la RPC como la componente que reintegra a travs de la red las partes divididas del programa. En ocasiones las RPCs reciben el nombre de mecanismos de acoplamiento.

Figura 3.7. Llamadas a procedimiento remoto. Mediante este tipo de divisin de un programa, se evita el tener que copiar toda la base de datos, o la mayor parte de ella, al sistema del usuario cada vez que ste necesita acceder a los datos. En vez de eso, el servidor puede simplemente procesar la peticin, e incluso realizar algunos clculos sobre los datos, y luego enviar el producto final al usuario. Adems, este proceso permite que ms

de un usuario acceda a los mismos datos a la vez, puesto que la sincronizacin con la base de datos se hace ms sencilla si el dato se gestiona en una nica localizacin. Los entornos de informtica distribuida son colecciones de computadoras conectadas mediante un sistema de comunicacin la red. Es fcil ver esta red como una plataforma de computacin, en la cual cualquiera de las computadoras presentes puede ser un cliente o un servidor, dentro de un acuerdo entre pares. Los programas individuales podran enviarse a computadores que estuviesen ms capacitados para ejecutarlos, mientras que el procesamiento de algunas tareas podra separarse en rutinas, que se ejecutaran en paralelo en varios computadores diferentes de la red. Esta estrategia emplea los recursos de las computadoras que estn desocupadas y es un motivo ms para invertir en una red. Una tpica red extendida por una corporacin, consta de muchos sistemas de computadoras distintas que ejecutan diferentes sistemas operativos. Como las redes corporativas ya son una realidad, los programadores deben crear software ejecutable en una extensa gama de computadores y con distintos protocolos de comunicacin de red. Esto significa que los programadores no necesitan preocuparse por la red subyacente o del protocolo usado para transportar los datos por dicha red. La siguiente seccin describe las RPCs, en relacin con el modo en que las implementa el Entorno de informtica distribuida (DCE, Distributed Computing Environment) de la Fundacin de software abierto (OSF, Open Software Foundation). Las RPC de la OSF estn diseadas para que operen en entornos heterogneos de informtica distribuida. Est muy difundido el uso del protocolo Informtica de red abierta (ONC, Open Network Computing) Llamada a procedimiento remoto/Representacin de los datos externos (RPC/XDR, Remote Procedure Call/External Data Representation). De los 31 millones de sistemas que ejecutan el Sistema de archivos en red (NFS, Network File System), cerca de 28 millones tambin usan la biblioteca ONC RPC y pueden actuar como clientes o servidores de aplicaciones distribuidas. Todos los sistemas operativos de IBM excepto el OS/400 soportan ONC RPC. Los laboratorios UNIX System incluyen RPC/XDR como una parte normalizada del UNIX System V Release 4. Novell soporta la tecnologa de nueva generacin ONC + Llamada a procedimiento remoto independiente del transporte (TI-RPC, Transport Independent Remote Procedure). TI-RPC usa el Interfaz de nivel de transporte (TLI) para transportar las interdependencias. TLI proporciona un modo muy extendido de acceso a los servicios de transporte orientados o no a conexin. Las RPC de la Fundacin de software abierto (0SF) Las herramientas RPC proporcionan un lenguaje de programacin y un compilador para el desarrollo de aplicaciones modulares que se ejecutan tanto en sistemas clientes como en sistemas servidores del mismo modo que si fuesen procedimientos locales. Una facilidad en tiempo de ejecucin permite que aplicaciones distribuidas se ejecuten en mltiples, heterogneos sistemas, debido a que hace que las arquitecturas subyacentes y los protocolos sean transparentes a la aplicacin. El programador crea una definicin de interfaz mediante un Lenguaje de definicin de interfaces (IDL). IDL es una herramienta que usan los programadores para especificar procedimientos diseados para que se ejecuten de forma remota. El compilador del IDL traduce la definicin que se ha hecho en IDL del interfaz a fragmentos que estn ligados tanto al cliente

como al servidor. En la posicin del cliente, el fragmento permanece a la espera del procedimiento servidor, y en la posicin del servidor, el fragmento permanece a la espera del procedimiento cliente. Una facilidad en tiempo de ejecucin de las RPCs, es que localizan al cliente y al servidor para que trabajen de acuerdo con los fragmentos para la realizacin de operaciones de RPC. Uno de los problemas que se plantean con el uso de las RPCs en entornos heterogneos, es que las diferentes mquinas representan los datos de forma diferente. Las OSF RPC evitan en cierto modo este problema mediante el etiquetado de las llamadas con la descripcin de la representacin de datos bsica de la mquina que realiza la llamada. Cuando se recibe una llamada, y si la etiqueta indica que las dos mquinas representan de manera diferente los datos, el receptor convierte los datos. La facilidad en tiempo de ejecucin de las RPCs proporciona el mecanismo necesario para la transferencia de peticiones de los clientes a los servidores y para la recepcin de respuestas a travs de la red. La facilidad en tiempo de ejecucin de las DCE RPCs tambin interacta con otros servicios DCE de la red, como los servicios de nomenclatura, seguridad y tiempo. Dicha facilidad tiene las siguientes caractersticas: Se puede ejecutar en muchas redes diferentes. Los programadores no tienen que reescribir las aplicaciones para cada red. Proporciona recuperacin de fallos tanto en la parte del cliente como en la del servidor, as como en la red. Soporta sistemas de archivos, bases de datos y otros servicios que transmiten datos de longitud variable. Proporciona un mtodo basado en nombres para la localizacin de servidores, que es independiente de cualquier servicio de directorios en particular. Proporciona un interfaz para una facilidad de seguridad que protege la comunicacin RPC de las intromisiones. El servicio de seguridad garantiza la privacidad de la informacin confidencial y protege la integridad de la comunicacin mediante autentificacin. Soporta el multihilado para el procesamiento concurrente o paralelo en la red, de manera que una aplicacin puede realizar muchas acciones simultneamente. Proporciona portabilidad e interoperabilidad con entornos de diferentes vendedores.

Potrebbero piacerti anche