Objetos distribuidos 2



Descargar 144,79 Kb.
Página1/7
Fecha de conversión19.03.2017
Tamaño144,79 Kb.
  1   2   3   4   5   6   7

Objetos distribuidos 2

Hasta ahora este libro se ha centrado en el uso del paradigma de paso de mensajes en la computación distribuida. A través del paradigma de paso de mensajes, los procesos intercambian datos y, mediante el uso de determinados protocolos, colaboran en la realización de tareas. Las interfaces de programación de aplicaciones basadas en este paradigma, tales como el API de sockets de unidifusión y multidifusión de Java, proporcionan una abstracción que permite esconder los detalles de la comunicación de red a bajo nivel, así como escribir código de comunicación entre procesos (IPC), utilizando una sintaxis relativamente sencilla. Este capítulo introduce un paradigma que ofrece aún una mayor abstracción, los objetos distribuidos. 2



Paso de mensajes frente a objetos distribuidos 2

Una arquitectura típica de objetos distribuidos 4

Sistemas de objetos distribuidos 5

Llamadas a procedimientos remotos 5

RMI (Remote Method Invocation) 7

La arquitectura de Java RMI 7

Parte cliente de la arquitectura 7

Parte servidora de la arquitectura 8

Registro de los objetos 8



API de Java RMI 8

La interfaz remota 9

Software de la parte servidora 10

La implementación de la interfaz remota 10

Generación del resguardo y del esqueleto 10

El servidor de objeto 11

Software de la parte cliente 13



Una aplicación RMI de ejemplo 13

Pasos para construir una aplicación RMI 14

Algoritmo para desarrollar el software de la parte servidora 14

Algoritmo para desarrollar el software de la parte cliente 15

Pruebas y depuración 15

Comparación entre RMI y el API de sockets 16

Para pensar 16

Resumen 17

Ejercicios 17

Referencias 19

Figuras 20

Notas al margen 27

Objetos distribuidos




Hasta ahora este libro se ha centrado en el uso del paradigma de paso de mensajes en la computación distribuida. A través del paradigma de paso de mensajes, los procesos intercambian datos y, mediante el uso de determinados protocolos, colaboran en la realización de tareas. Las interfaces de programación de aplicaciones basadas en este paradigma, tales como el API de sockets de unidifusión y multidifusión de Java, proporcionan una abstracción que permite esconder los detalles de la comunicación de red a bajo nivel, así como escribir código de comunicación entre procesos (IPC), utilizando una sintaxis relativamente sencilla. Este capítulo introduce un paradigma que ofrece aún una mayor abstracción, los objetos distribuidos.

Paso de mensajes frente a objetos distribuidos


El paradigma de paso de mensajes es un modelo natural para la computación distribuida, en el sentido de que imita la comunicación entre humanos. Se trata de un paradigma apropiado para los servicios de red, puesto que estos procesos interactúan a través del intercambio de mensajes. Pero este paradigma no proporciona la abstracción necesaria para algunas aplicaciones de red complejas, por los siguientes motivos:


  • El paso de mensaje básico requiere que los procesos participantes estén fuertemente acoplados. A través de esta interacción, los procesos deben comunicarse directamente entre ellos. Si la comunicación se pierde entre los procesos (debido a fallos en el enlace de comunicación, en el sistema o en uno de los procesos), la colaboración falla. Por ejemplo, considérese una sesión del protocolo Echo: si la comunicación entre el cliente y el servidor es interrumpida, la sesión no puede continuar.

  • El paradigma de paso de mensajes está orientado a datos. Cada mensaje contiene datos con un formato mutuamente acordado, y se interpreta como una petición o respuesta de acuerdo al protocolo. La recepción de cada mensaje desencadena una acción en el proceso receptor.

Por ejemplo, en el protocolo Echo, el receptor de un mensaje del proceso p solicita esta acción al servidor Echo: un mensaje conteniendo los mismos datos se envía al proceso p. En el mismo protocolo, el receptor de un mensaje del servidor Echo por el proceso p desencadena esta acción: un nuevo mensaje es solicitado por el usuario y el mensaje se envía al servidor Echo.

Mientras que el hecho de que el paradigma sea orientado a datos es apropiado para los servicios de red y aplicaciones de red sencillas, no es adecuado para aplicaciones complejas que impliquen un gran número de peticiones y respuestas entremezcladas. En dichas aplicaciones, la interpretación de los mensajes se puede convertir en una tarea inabordable.

El paradigma de objetos distribuidos es un paradigma que proporciona mayor abstracción que el modelo de paso de mensajes. Como su nombre indica, este paradigma está basado en objetos existentes en un sistema distribuido. En programación orientada a objetos, basada en un lenguaje de programación orientado a objetos, tal como Java, los objetos se utilizan para representar entidades significativas para la aplicación. Cada objeto encapsula


  • el estado o datos de la entidad – en Java, dichos datos se encuentran en las variables de instancia de cada objeto;

  • las operaciones de la entidad, a través de las cuales se puede acceder o modificar el estado de la entidad – en Java, estas operaciones se denominan métodos.

Para ilustrar estos conceptos, considérese los objetos de la clase MensajeDatagrama presentada en la Figura 5.12 (en el Capítulo 5). Cada objeto instanciado de esta clase contiene tres variables de estado: un mensaje, la dirección del emisor y el número de puerto del emisor. Además, cada objeto contiene tres operaciones: (1) un método fijaValor, que permite modificar los valores de las variables de estado, (2) un método obtieneMensaje, que permite obtener el valor actual del mensaje, y (3) un método obtieneDireccion, que permite obtener la dirección del emisor.


Aunque en este libro se han utilizado objetos en capítulos anteriores, tales como el objeto MensajeDatagrama, se trata de objetos locales, en lugar de objetos distribuidos. Los objetos locales son objetos cuyos métodos sólo se pueden invocar por un proceso local, es decir, un proceso que se ejecuta en el mismo computador del objeto. Un objeto distribuido es aquel cuyos métodos pueden invocarse por un proceso remoto, es decir, un proceso que se ejecuta en un computador conectado a través de una red al computador en el cual se encuentra el objeto. En un paradigma de objetos distribuidos, los recursos de la red se representan como objetos distribuidos. Para solicitar un servicio de un recurso de red, un proceso invoca uno de sus métodos u operaciones, pasándole los datos como parámetros al método. El método se ejecuta en la máquina remota, y la respuesta es enviada al proceso solicitante como un valor de salida. Comparado con el paradigma de paso de mensajes, el paradigma de objetos distribuidos es orientado a acciones: Hace hincapié en la invocación de las operaciones, mientras que los datos toman un papel secundario (como parámetros y valores de retorno). Aunque es menos intuitivo para los seres humanos, el paradigma de objetos distribuidos es más natural para el desarrollo de software orientado a objetos.
La Figura 7.1 ilustra el paradigma. Un proceso que se ejecuta en la máquina A realiza una llamada a un método de un objeto distribuido de la máquina B, pasando los datos necesarios, en caso de existir, mediante argumentos. La llamada al método invoca una acción realizada por el método en la máquina A, y un valor de salida, en caso de que exista, se pasa desde la máquina A a la máquina B. Un proceso que utiliza objetos distribuidos se dice que es un proceso cliente de ese objeto, y los métodos del objeto se denominan métodos remotos (por contraposición a los métodos locales, o métodos pertenecientes a un objeto local) del proceso cliente.
En el resto del capítulo se va a proceder a presentar una arquitectura genérica que da soporte al paradigma de objetos distribuidos; a continuación se explorará un ejemplo de este tipo de arquitecturas: Java RMI (Remote Method Invocation).

  1   2   3   4   5   6   7


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal