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