Unidad 5 5.1
Introduccion
Que es un Procedimiento? En el ámbito de la programación,
un procedimiento es un tipo sub algoritmo, es el término para describir
una secuencia de órdenes que hacen una tarea específica de una
aplicación más grande.
Las declaraciones de procedimientos generalmente
son especificadas por:
Un nombre único en el ámbito.- Nombre del
procedimiento con el que se identifica y se distingue de otros. No podrá
haber otro procedimiento ni función con ese nombre (salvo sobrecarga o
polimorfismo en programación orientada a objetos). Una lista de
parámetros.
- Especificación del conjunto de argumentos (pueden ser cero,
uno o más) que el procedimiento debe recibir para realizar su tarea. El
código u órdenes de procesamiento.
- Conjunto de órdenes y sentencias
que debe ejecutar el procedimiento. La diferencia entre un procedimiento
y una función (el otro tipo de sub algoritmos) radica en que estos
últimos devuelven un resultado. Los procedimientos en programación
generalmente son los que realizan operaciones de entrada/salida, en
general, cualquier operación más o menos compleja que no requiera
devolver un valor.
Que es un Cliente? El cliente es una aplicación
informática que se utiliza para acceder a los servicios que ofrece un
servidor, normalmente a través de una red de telecomunicaciones. El
término se usó inicialmente para los llamados terminales tontos,
dispositivos que no eran capaces de ejecutar programas por sí mismos,
pero podían conectarse a un ordenador central y dejar que éste realizase
todas las operaciones requeridas, mostrando luego los resultados al
usuario. Se utilizaban sobre todo porque su coste en esos momentos era
mucho menor que el de un ordenador.
Actualmente se suelen utilizar para
referirse a programas que requieren específicamente una conexión a otro
programa, al que se denomina servidor y que suele estar en otra máquina.
Ya no se utilizan por criterios de coste, sino para obtener datos
externos (por ejemplo páginas web, información bursatil o bases de
datos), interactuar con otros usuarios a través de un gestor central
(como por ejemplo los protocolos bittorrent o IRC), compartir
información con otros usuarios (servidores de archivos y otras
aplicaciones Groupware) o utilizar recursos de los que no se dispone en
la máquina local (por ejemplo impresión) Uno de los clientes más
utilizados, sobre todo por su versatilidad, es el navegador web. Muchos
servidores son capaces de ofrecer sus servicios a través de un navegador
web en lugar de requerir la instalación de un programa específico.
Que
es un Servidor? En informática, un servidor es una computadora que,
formando parte de una red, provee servicios a otras denominadas
clientes. También se suele denominar con la palabra servidor a: Una
aplicación informática o programa que realiza algunas tareas en
beneficio de otras aplicaciones llamadas clientes. Algunos servicios
habituales son los servicios de archivos, que permiten a los usuarios
almacenar y acceder a los archivos de una computadora y los servicios de
aplicaciones, que realizan tareas en beneficio directo del usuario
final. Este es el significado original del término. Es posible que un
ordenador cumpla simultáneamente las funciones de cliente y de servidor.
Una computadora en la que se ejecuta un programa que realiza alguna
tarea en beneficio de otras aplicaciones llamadas clientes, tanto si se
trata de un ordenador central (mainframe), un miniordenador, un
ordenador personal, una PDA o un sistema integrado; sin embargo, hay
computadoras destinadas únicamente a proveer los servicios de estos
programas: estos son los servidores por antonomasia. Ejemplo de un
Servidor.
Un servidor no es necesariamente una máquina de última
generación grande y monstruosa, no es necesariamente un superordenador;
un servidor puede ser desde una computadora vieja, hasta una máquina
sumamente potente (ej.: servidores web, bases de datos grandes, etc.
Procesadores especiales y hasta varios gigas de memoria). Todo esto
depende del uso que se le dé al servidor. Si usted lo desea, puede
convertir al equipo desde el cual usted está leyendo ésto en un servidor
instalando un programa que trabaje por la red y a la que los usuarios
de su red ingresen a través de un programa de servidor web como Apache. A
lo cual podemos llegar a la conclusión de que un servidor también puede
ser un proceso que entrega información o sirve a otro proceso, el
modelo cliente/servidor no necesariamente implica tener dos ordenadores,
ya que un proceso cliente puede solicitar algo como una impresión a un
proceso servidor en un mismo ordenador.
Llamados también RPC(Remote Procedures Call) inventados por
Birrel y Nelson en 1984 no es más que el procedimiento en el que una
maquina recurre a programas o aplicaciones situados en otra máquina que
se encuentra a distancia, este proceso es fácil consta de lo siguiente:
Maquina Cliente pide servicio a Servidor Maquina Servidor valida el
servicio y envía respuesta Ambas maquinas se relacionan mediante
protocolos. Maquina servidor envía servicios a máquina Cliente.
5.3
Eventos y notificaciones
En la programación existe la programación
orientada a eventos, en la que un evento es un mensaje de software que
indica que algo ha ocurrido, como un tecleo o un click de un mouse. En
el control de procesos, un evento es una ocurrencia que ha ocurrido y
que ha sido registrado. Llamada a Procedimiento Remoto El mecanismo
general para las aplicaciones cliente-servidor se proporciona por el
paquete Remote Procedure Call (RPC). RPC fue desarrollado por Sun
Microsystems y es una colección de herramientas y funciones de
biblioteca. Aplicaciones importantes construidas sobre RPC son NIS,
Sistema de Información de Red[1] (descrito en Capítulo 13), y NFS,
Sistema de Ficheros de Red[2] (descrito en Capítulo 14), ambos se
describen en este libro.
Un servidor RPC consiste en una colección de
procedimientos que un cliente puede solicitar por el envío de una
petición RPC al servidor junto con los parámetros del procedimiento. El
servidor invocará el procedimiento indicado en nombre del cliente,
entregando el valor de retorno, si hay alguno. Para ser independiente de
la máquina, todos los datos intercambiados entre el cliente y el
servidor se convierten al formato External Data Representation [3] (XDR)
por el emisor, y son reconvertidos a la representación local por el
receptor. RPC confía en sockets estandard UDP y TCP para transportar los
datos en formato XDR hacia el host remoto. Sun amablemente a puesto RPC
en el dominio público; se describe en una serie de RFCs. A veces las
mejoras en una aplicación RPC introducen cambios incompatibles con la
interfaz de llamada a procedimientos. Por supuesto, simplemente
cambiando el servidor hará que no funcionen todas las aplicaciones que
todavía esperen el comportamiento original. Por lo tanto, los programas
RPC tienen números de versión asignados, casi siempre empezando por 1, y
con cada nueva versión de la interfaz RPC, este contador se incrementa.
A menudo, un servidor puede ofrecer varias versiones simultáneamente;
entonces los clientes indican a través del número de versión en la
petición que implementación del servicio quieren usar.
La comunicación
entre servidores RPC y clientes es un tanto peculiar. Un servidor RPC
ofrece una o más colecciones de procedimientos; cada conjunto se llama
un programa y es idenficado de forma única por un número de programa.
Una lista que relaciona nombres de servicio con números de programa se
mantiene usualmente en /etc/rpc, un extracto del cual se ve en Ejemplo
12-4. Ejemplo 12-4. Una muestra de fichero /etc/rpc # # /etc/rpc -
servición miscaláneos basados en RPC # portmapper 100000 portmap sunrpc
rstatd 100001 rstat rstat_svc rup perfmeter rusersd 100002 rusers nfs
100003 nfsprog ypserv 100004 ypprog mountd 100005 mount showmount ypbind
100007 walld 100008 rwall shutdown yppasswdd 100009 yppasswd bootparam
100026 ypupdated 100028 ypupdate En redes TCP/IP , los autores de RPC se
enfrentan al problema del mapeo de números de programa con servicios
genéricos de red. Diseñaron cada servidor para proveer ambos puertos TCP
y UDP para cada programa y cada versión. Generalmente, las aplicaciones
RPC usan UDP cuando envían datos, y vuelven a TCP sólo cuando los datos
a transferir no caben en un solo datagrama UDP. Por supuesto, los
programas cliente necesitan averiguar a qué puerto se refiere un número
de programa. Usar un fichero de configuración para esto podría ser
demasiado inflexible; debido a que las aplicaciones RPC no usan puertos
reservados, no hay garantía de que un puerto originalmente usado por
nuestra aplicación de base de datos, no haya sido tomado por cualquier
otro proceso.
Por lo tanto, las aplicaciones RPC toman cualquier puerto
que puedan obtener y lo registran con un programa especial llamado el
demonio portmapper. El mapeador de puertos actúa como un intermediario
para todos los servidores RPC ejecutándose en su máquina. Un cliente que
desea contactar con un servicio con un número de programa dado primero
pregunta al mapeador de puertos en el host del servidor, el cuál
devuelve el número de puerto TCP y UDP en donde el servicio puede ser
alcanzado. Este método introduce un solo punto de fallo, similar a como
el demonio inetd hace para los servicios estándar de Berkeley. Sin
embargo, este caso es aún un poco peor porque cuando el mapeador de
puertos muere, toda la información de los puertos RPC se pierde; esto a
menudo significa que debe reiniciar todos los servidores RPC manualmente
o reiniciar la máquina. En Linux, el mapeador de puertos se llama
/sbin/portmap, o a veces /usr/sbin/rpc.portmap. Una vez que se cerciora
de que se inicia desde sus guiones de inicio de red, el mapeador de
puertos no requiere ninguna configuración.
No hay comentarios:
Publicar un comentario