ONC
ONC RPC,
abreviación del inglés Open
Network Computing Remote Procedure Call, es un protocolo de llamada a procedimiento remoto (RPC) desarrollado por el
grupo ONC de Sun
Microsystems como parte del
proyecto de su sistema de archivos de Red NFS, algunas veces se lo
denomina Sun ONC o Sun
RPC. Trabaja sobre los protocolos TCPy UDP. La codificación de
datos se realiza utilizando el protocolo XDR (presentación de datos).
ONC RPC está
regulado por RFC 1831. Los mecanismos de
autenticación usados por ONC RPC están descritos en RFC 2695, RFC 2203, y RFC 2623.
Desarrollo de aplicaciones: compiladores de protocolo
El desarrollo
de aplicaciones para ONC RPC consiste en desarrollar programas
cliente/servidor, donde los datos deben codificarse según el protocolo XDR.
Las
aplicaciones se realizan en forma sistemática mediante compiladores de
protocolo como el programa rpcgen, que fue el programa original
desarrollado por Sun que generaba casi todo el código en lenguaje C necesario
para crear los programas servidor y cliente. Existen compiladores de este
protocolo que generan código en Java, denominados jrpcgen.
Implementaciones
Las
implementaciones de ONC RPC existen para la mayoría de los sistemas como Unix (OpenVMS Alpha, OpenVMS I64,1 etc.) y Linux (en el subdirectorio sunrpc de la biblioteca Glibc).
Las
tecnologías que involucran a ONC RPC (incluyendo NFS y NIS) desarrollada por Sun
para su sistema operativo Solaris, en sus versiones más recientes
se denominan tecnologías ONC+.2
La Free Software Foundation está desarrollando una implementación GNU de este protocolo, denominado GNU
Guile-RPC,3 como parte del desarrollo del lenguaje
de programación GNU Guile.
Microsoft provee una implementación para su Windows en el producto "Microsoft Windows
Services for UNIX”; además, existen otras implementaciones de ONC RPC para
Windows, incluyendo versiones en lenguaje C/C++, Java, y Microsoft .NET.
DCE
DCE Remote
Procedure Call o bien DCE RPC es un sistema de llamada a procedimiento
remoto del conjunto de
software OSF DCE. DCE / RPC, la
abreviatura de "Distributed Computing Environment / Remote Procedure Calls
", es el sistema de llamada a procedimiento remoto desarrollado para el
entorno de la informática distribuida (DCE). Este sistema permite a los
programadores escribir software distribuido como si fuera todos los que
trabajan en el mismo equipo, sin tener que preocuparse por el código de red
subyacente.1
DCE RPC no
debe confundirse con DCE el cual es un conjunto de servicios
que incluye DCE RPC, además de otras cosas como CDS y DCE DFS.
DCE RPC fue
encargado por la fundación Open Software Foundation. Una de las
compañías clave que contribuyeron fue Apollo.
DCOM
Distributed
Component Object Model (DCOM), en español Modelo de Objetos de
Componentes Distribuidos, es una tecnología propietaria de Microsoft para
desarrollar componentes software distribuidos
sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y
proporciona el sustrato de comunicación entre la infraestructura del servidor
de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET.1 2
La adición de
la "D" a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión
mejorada de Microsoft, conocida como MSRPC.
En términos
de las extensiones que añade a COM, DCOM tenía que resolver los problemas de
·
Aplanamiento -
Serializar y deserializar los argumentos y valores de retorno de las llamadas a
los métodos "sobre el cable".
·
Recolección de basura distribuida,
asegurándose que las referencias mantenidas por clientes de las interfaces sean
liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red
se pierde.
Uno de los
factores clave para resolver estos problemas es el uso de DCE/RPC como el
mecanismo RPC subyacente
bajo DCOM. DCE/RPC define reglas estrictas en cuanto al aplanamiento y a quién
es responsable de liberar la memoria.
DCOM fue uno
de los mayores competidores de CORBA. Los defensores de ambas tecnologías sostenían que algún
día serían el modelo de código y servicios sobre Internet.
Sin embargo, las dificultades que suponía conseguir que estas tecnologías
funcionasen a través de cortafuegos y sobre máquinas inseguras o desconocidas,
significó que las peticiones HTTP normales, combinadas con los navegadores les
ganasen la partida. Microsoft, en su momento intentó y fracasó anticiparse a
esto añadiendo un transporte extra HTTP a DCE/RPC denominado
"ncacn_http" (Connection-based, over HTTP).
Parámetro por Valor
Un parámetro
por valor, como fd o nbytes, solo se copia a la pila. Para el
procedimiento que recibe la llamada, un parámetro por valor es tan sólo una
variable local ya iniciada. El procedimiento llamado podría modificarla, pero
esto no afecta el valor de la variable original en el procedimiento que hizo la
llamada.
Parámetro por Referencia
Un parámetro
por referencia en C es un apuntador a una variable (es decir, la dirección de
la variable), en lugar del valor de la variable. En la llamada a read, el
segundo parámetro es un parámetro por referencia, puesto que en C los arreglos
siempre se transfieren por referencia. Lo que se introduce en realidad a la
pila es la dirección del arreglo de caracteres. Si el procedimiento llamado
utiliza este parámetro para guardar algo en el arreglo de caracteres, esto sí
modifica el arreglo en el procedimiento que hizo la llamada. La diferencia
entre los parámetros llamados por valor o por referencia es importante para
RPC, como veremos más adelante.
