PDF de programación - PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.2: ICE Overview

Imágen de pdf PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.2: ICE Overview

PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.2: ICE Overviewgráfica de visualizaciones

Publicado el 14 de Enero del 2017
964 visualizaciones desde el 14 de Enero del 2017
223,4 KB
20 paginas
Creado hace 15a (12/01/2009)
PROGRAMACION CONCURRENTE Y DISTRIBUIDA

VIII.2: ICE Overview

José M. Drake

Notas:

Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL.

1

Arquitectura ICE

Ice es una plataforma middleware para el desarrollo de
aplicaciones basada en objetos distribuidos.
Es un middleware ligero y abierto que pretende ser
compatible con cualquier tipo de plataforma (Windows,
Linux, y otras propietarias), y con los principales lenguajes de
programación (C,C++, Java, C#, VisualBasic, Phyton, PHP).
ICE proporciona:
APIs y librerías para soportar el paradigma cliente/servidor sobre
plataformas distribuidas heterogéneas y utilizando múltiples lenguajes.

Servicios y herramientas para soportar las aplicaciones.
Hereda de CORBA una gran parte de su terminología, aunque
difiere de él en algunos conceptos claves.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

2

Notas:

2

Clientes y servidores

Representa el modelo evolucionado del paradigma cliente/servidor que
corresponde al concepto de objetos distribuidos.
El concepto de cliente y servidor no representan elementos de una
aplicación, sino roles que juegan los elementos en una interacción:
Cliente: es el elemento activo en una interacción. Hacen requerimientos a los

servidores.

Servidor: es el elemento pasivo en una interacción. Proporcionan los servicios

que le requieren los clientes.

Un mismo elemento puede jugar el papel de cliente y servidor:
Un servidor para implementar un servicio que ofrece, puede requerir como

cliente un servicio de otro elemento.

Un cliente puede ofrecer a un servidor una operación de callback. Cuando este

la ejecuta está operando como cliente de aquel.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

3

Notas:

3

Objeto Ice

Es un ente conceptual local o remoto que puede responder a los
requerimientos de clientes:
Un objeto ICE tiene una identidad propia que es única en todo el dominio de
comunicación de ICE. Si dos objetos tienen la misma identidad ambos son el
mismo objeto.

Un objeto puede ser accedido por un servant ICE o a través de múltiples

servant ICE.

Un objeto puede tener múltiples instanciaciones simultaneas en diferentes
espacio de direcciones, y sin embargo es el mismo objeto porque tiene la
misma identidad.

La funcionalidad de un objeto ICE se describe a través de las interfaces que
implementan sus facetas. Cada interfaz describe el conjunto de métodos que
pueden ser invocados en el puerto que la implementa.

Un objeto puede poseer múltiples servicios, cada uno de ellos se denomina
faceta y está descrito mediante una interfaz. Una de ellas es la principal. Desde
cualquier interfaz, el cliente puede navegar a las otras facetas del mismo
objeto.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

4

Notas:

4

Structura cliente servidor en ICE

Client

Server

Proxy

Skeleton

Adapter

Client run-time ICE

Server run-time ICE

El run-time de ICE es el software de base que existe en cada procesador que soporta objetos
ICE y que soporta el intercambio de mensaje que implementa la invocación de mensajes y el
retorno de resultados. La interfaz que ofrece se utiliza para tareas de inicialización y
administrativas de la distribución.
El proxy es generado a partir de la definición Slice del servicio. Tiene dos funciones:
Proporciona la interfaz local a través del que el cliente realiza la invocación.
Proporciona el código para secuencializar y desencuencilizar los datos que se intercambian.
El esqueleto es generado a partir de la especificación Slice del servidor, y proporciona el
código a través del que el run-time de ICE invoca localmente por delegación los métodos que
el cliente ha invocado a través el proxy.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

5

Notas:

5

Structura cliente sevidor en ICE

El adaptador es parte del API de ICE y realiza en el servidor las siguientes tareas:
Traduce en el lado del servidor, los mensajes que llegan en las invocaciones a

invocaciones de métodos concretos del servidor.

Constituye el elemento que se asocia a una o varias terminaciones de comunicación
concretas (dirección + puerto) que son los destino de los mensajes que invocan los
métodos del servidor.

Es el responsable de la creación de los proxies que pueden ser pasados a los clientes. El
adaptador conoce el tipo, la identidad y los detalles de comunicación para acceder al
servidor.

Desde el punto de vista de negocio, sólo hay dos procesos, el del cliente que
invoca y el del servidor que ejecuta la invocación. El run-time de ICE
proporcionan los elementos ocultos que existen entre ambos.
Cuando el proxy es indirecto, existe el tercer proceso de localizador, que se utiliza
para traducirlo a una información concreta de acceso.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

6

Notas:

6

Proxy ICE

Para que un cliente pueda invocar los métodos de las facetas de un objeto
ICE, debe disponer de un proxy correspondiente al objeto.
El proxy es un elemento que existe en el espacio de direcciones del
cliente, y representa en él al objeto con el que se comunica.
Cuando el cliente invoca un método del proxy, el run-time de ICE:
1. Localiza el objeto ICE.
2. Activa el servidor correspondiente al objeto si no está activo.
3. Se activa el objeto dentro del servidor.
4. Se transmiten los parámetros in del método invocado.
5. Se espera a que el método termine su ejecución en el servidor.
6. Retorna al cliente el valor retornado por el método y los parámetros out (o la

excepción si es lanzada por el servidor o el run-time)

El proxy contiene toda la información necesaria para llevar a cabo estas
tareas:

La dirección (IP + port) que permite acceder al servidor.
La identidad que identifica unívocamente el objeto y el server a través del
que se accede.
Opcionalmente el identificador de la faceta a la que referencia el proxy.

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

7

Notas:

7

Generación del proxy

Todo proxy puede ser formulado como un string que lo define
unívocamente. El run-time de ICE tiene capacidad de crear el proxy a
partir del string que lo representa.
Hay dos tipos de proxies:
Proxy directo: Encapsula toda la información (identidad y dirección de

acceso).

“SimplePrinter:tcp –h server1 –p 10001”

Proxy indirecto: Contiene la identidad del objeto (well-known object), o la

identidad mas el identificador del adaptador a través del que se accede.

“SimplePrinter”
“SimplePrinter@PrinterAdapter”

El proxy indirecto no tiene información de la dirección del objeto. Esta debe
obtenerse a través de un servicio de localización.

ICE admite replicación, esto es, un mismo objeto puede ser accedido a
través de múltiples direcciones y adaptadores:

“SimplePrinter:tcp –h server1 –p 10001 :tcp –h server2 –p 10002”

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

8

Notas:

8

Servant

El servant o esqueleto es el elemento que introduce ICE para invocar por
delegación el método del servidor en su espacio de memoria.
Un servant es una instancia de una clase cuyos métodos han sido escritor
por el diseñador del servicio, y que se registran en el run-time de ICE para
este invoque los correspondiente métodos cuando lo haga el cliente a
través del proxy.
Un único servant puede:
Dar acceso a un único objeto ICE, el cual está referenciado en el propio

servant.

O en cada invocación , dar acceso a un diferente objeto ICE. En este caso la

identidad del objeto debe ser incluida en el requerimiento.

Un objeto puede ser accedido a través de múltiples servant diferentes. (
Puede ser para acceder con diferentes protocolos, o con diferentes
características de comportamiento)

Procodis’07: VIII.2- ICE: Internet Communications Engine

J. M. Drake

9

Notas:

9

Tipos de invocaciones

Invocación síncrona: El cliente que invoca se suspende hasta que el método invocado ha
terminado en el servidor y los resultados han sido retornados. El es método que se utiliza por
defecto.
Invocación asíncrona (AMI): El cliente en la invocación entrega al proxy un objeto de
callback, y tras haber conocido que el método ha sido invocado al servidor, recibe el control
y continua su ejecución. Cuando la ejecución del método ha terminado, y los resultados han
sido transferidos al proxy, este ejecuta el callback, y a través de él, los transfiere al cliente. El
servidor no tiene información de si la invocación ha sido síncrona o asíncrona.
Ejecución asíncrona (AMD): Cuando en el lado del servidor se recibe la invocación, se crea
un nuevo thread, que se realiza su ejecución (en concurrencia con otras ejecuciones previas).
El servidor recibe información del inicio y finalización de la ejecución a fin de habilitar o
inhibir su ejecución, o el retorno de resultados.
Invocación One way: Sólo es posible en métodos que no retornan resultados. El cliente
espera a que la invocación se haya iniciado en el servidor, y luego continua sin esperar a que
el método se haya ejecutado.
Invocación Datagram: Sólo es posible en métodos que no retornan resultados. El cliente tras
transferir la invocación, continua sin esperar a confirmar que haya llegado al servidor.
Invocación Batched Oneway y Datagram: Varias invocaciones de tipo OneWay o Datagram
relativas a un mismo servidor
  • Links de descarga
http://lwp-l.com/pdf1036

Comentarios de: PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.2: ICE Overview (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad