Download Corba
Document related concepts
no text concepts found
Transcript
Arquitectura de Objetos Distribuidos
Patrón de diseño
BROKER
CONTEXTO
AMBIENTE
Sistema distribuido
(Hetérogeneo)
COMPONENTES
desacoplados
Interactúan por invocaciones de
servicio remotos
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
2
PROBLEMA
COMUNICACION
Mecanismo de comunicación entre
procesos en SD
Operaciones en tiempo
de ejecución
Debe conocer la
ubicacón de los
servidores
Servicios para añadir,
quitar, intercambiar,
activar y localizar
componentes
Sistemas
distribuidos
=
Esconder detalles del
sistema e implementación
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
Sistemas
centralizados
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Cuenta {
public String nombreUsuario();
public float balance();
public void retiro(float amt);
}
3
EJEMPLO
Sistemas de información (CIS)
Mantener información
Hoteles
Resutaurantes
Eventos …
Acceso desde WWW
Continuos cambios y crecimiento
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
4
SOLUCION
Introducir un componente BROKER que implemente la
funcionalidad de los problemas anteriores, para lograr
desacoplamiento y transparencia en la comunicación entre el
cliente y el servidor
CLIENTE
Patrón de diseño broker
SERVIDOR
Análisis y Diseño Orienteado a Objetos
5
Estructura del Broker
Formado por seis tipos de componentes:
Clientes
Servidores
Brokers
Puentes
Proxy del lado del cliente
Proxy del lado del servidor
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
6
HETEROGENEIDAD
¿Cómo lo logra?
MARSHLLIN
G
: Servidor
Registra
servidores
Interoperar
con otros
BROKERS
Registra
con el
Broker
UNMARSHALLIN
G
PROXY
: Broker
SERVIDOR
PROXY
inicializar CLIENTE
* ] mientras esteActivo() ]
registrarServicio()
actualizarRepositorio()
confirmacion()
Envía
solicitude
s
Localiza al
servidor
* ] mientras esteActivo() ]
Envía
solicitud
INTERMEDIARIOS
Transmite
Cliente
– Broker
resultados
Servidory- Broker
excepciones
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
Ejecuta
el
servicio
MARSHLLIN
G
Avisa de la
disponibilidad
de sus
servicios
7
:Cliente
: ProxyCliente
:Broker
: ProxyServidor
: Servidor
llamarServidor()
enviarSolicitud()
empaquetaDatos()
enviarSolicitud()
localizaServidor()
llamarServicio()
desempaqueta()
ejecutaServicio()
empaquetaDatos()
enviaRespuesta()
localizaCliente()
regresar()
resultado()
Patrón de diseño broker
desempaqueta()
Análisis y Diseño Orienteado a Objetos
8
:Broker A
: Puente A
:Puente B
:Broker B
enviarSolicitud()
localizarServidor()
enviarMensaje()
empaquetarDatos()
enviarMensaje()
desempaquetarDatos()
enviarSolicitud()
localizarServidor()
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
9
Diagrama de Clases
ProxyCliente
* Transfiere mensajes
Broker
Transfiere mensajes
ProxyServidor
empaquetarDatos()
desempaquetarDatos()
llamarServicio()
enviarRespuesta()
*
actualizarRepositorio()
registrarServicio()
confirmacion()
localizarCliente()
localizarServidor()
enviarSolicitud()
enviarRespuesta()
empaquetarDatos()
desempaquetarDatos()
enviarSolicitud()
regreso()
*
*
Llamadas
Llamadas
Cliente
Puente
*
llamarServidor()
Patrón de diseño broker
Servidor
Usa APIs
empaquetarDatos()
desempaquetarDatos()
enviarMensaje()
transmitirMensaje()
Usa APIs
Análisis y Diseño Orienteado a Objetos
*
inicializar()
registrarServicio()
ejecutarServicio()
10
CORBA
Common Object Request Broker Architecture
Estándar de objetos distribuidos desarrollado
por el Object Management Group (OMG).
Da un marco general para construir sistemas
que involucran objetos distribuidos.
Independencia de Lenguaje.
Independencia de Plataforma.
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
11
Servicios de CORBA
ORB. Provee los medios para:
Enviar y recibir llamadas a métodos
remotos incluyendo argumentos
Localizar objetos por su nombre
Servicios de seguridad
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
12
ORB
Media entre el cliente y el objeto en
cuestión
Controla las llamadas a métodos remotos
Transparencias (facilidad de localización
de objetos, invocación de manera
tradicional)
La administración de objetos remotos:
Cliente llama un método a través del Stub
El ORB genera la petición, y se activa la implementación
La implementación comunica que está activa y disponible
Se recoge la petición y se pasa a través de skeleton a la
impementacion
del Análisis
objeto
solicitado
Patrón de
diseño broker
y Diseño
Orienteado a Objetos
El objeto devuelve un resultado al cliente a través del ORB
13
Control de peticiones ORB
Máquina Servidor
Máquina Cliente
Cliente
Objeto
ORB
Llamada
a método
Cliente
Implementación
Stub
BOA
Skeleton
ORB
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
Gestión de una llamada sobre un objeto remoto
14
Componentes de CORBA
Compiladores de IDL generan los Stubs del
cliente y los Skeletons del lado del servidor
El Stub realiza solicitudes en nombre del cliente
El Skeleton entrega la solicitud a la
implementación del objeto Corba
IIOP, Protocolo binario para cominicación entre
ORB’s
BOA (Basic Object Adapter), sirven como
pegamento entre la implementación del objeto
Corba y el ORB.
ResponsabilidadesAnálisis
(Registro
dea Objetos
objetos, genereración 15
y Diseño Orienteado
de referencias, llamada directas a objetos)
de diseño broker
Patrón
IDL: Interface Definition Language
Lenguaje para definición de interfaces de
objetos remotos que es independiente del
lenguaje de implementación.
La OMG ha definido como convertir
interfaces IDL en código C, C++, Java,
Smalltalk, COBOL, etc.
IDL es un lenguaje declarativo basado en
C++
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
16
Ejemplo IDL
module OS{
exception DivisionCero
{
float op1;
float op2;
}
interface Calculadora
{
float add (in float x1, in float x2);
float div (in float x1, in float x2)
raises (DivisionCero);
}
};
Nota: Parametros tipo in son pasados por valor
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
17
Ejemplo IDL
module OS{
module services {
interface Server {
readonly attribute string serverName;
boolean init (in string sName);
};
interface Printable {
boolean print (in string header);
};
interface PrintServer : Server {
boolean printThis (in Printable p);
};
};
};
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
18
RMI vs. CORBA
RMI es sólo Java, CORBA es independiente
del lenguaje. Hay compiladores de interfaces
CORBA para C, C++, Java, Cobol, etc.
CORBA es adecuado cuando se requiere
integrar sistemas legados
CORBA es mas maduro y complejo. Tiene
mayor aceptación en aplicaciones
corporativas
RMI permite migrar objetos a otra JVM
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
19
VALORACION
VENTAJAS
Transparencia en
ubicación
Cambio y extensibilidad
de componentes
Portabilidad del sistema
broker
Interoperabilidad entre
diferentes sistemas
broker
Reusabilidad
Patrón de diseño broker
DESVENTAJAS
Eficiencia Restringida
Baja tolerancia a fallos
Prueba y debbuging
Análisis y Diseño Orienteado a Objetos
20
Tarea
Realizar un ejemplo de un IDL ( libre) en donde se
definan los dos tipos de parametros que se pueden
pasar.
Compilar con una versión de CORBA y analizar el
código que genera.
A que lado ( cliente y servidor) de la aplicación le
corresponde cada código generado. Justificar.
Que diferencia existe entre Basic Object Adaptery
el Portable Object Adapter(POA)
Que ventajas ofrece cada uno.
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
21
Bibliografía
Pattern Design
Alex Chaffee, Bruce Martín. And
Introduction to CORBA
Patrón de diseño broker
Análisis y Diseño Orienteado a Objetos
22