Patrón de diseño BROKER Arquitectura de Objetos Distribuidos Patrón de diseño BROKER
Análisis y Diseño Orienteado a Objetos 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
PROBLEMA Mecanismo de comunicación entre procesos en SD COMUNICACION Mecanismo de comunicación entre procesos en SD Operaciones en tiempo de ejecución Esconder detalles del sistema e implementación Debe conocer la ubicacón de los servidores Servicios para añadir, quitar, intercambiar, activar y localizar componentes Sistemas distribuidos = Sistemas centralizados import java.rmi.Remote; import java.rmi.RemoteException; public interface Cuenta { public String nombreUsuario(); public float balance(); public void retiro(float amt); } Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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 SERVIDOR Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos 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
¿Cómo lo logra? HETEROGENEIDAD Registra con el Broker Interoperar con otros BROKERS UNMARSHALLING MARSHLLING Registra servidores PUENTE PROXY SERVIDOR PROXY CLIENTE Envía solicitudes Ejecuta el servicio Localiza al servidor INTERMEDIARIOS Cliente – Broker Servidor - Broker Envía solicitud MARSHLLING Transmite resultados y excepciones Avisa de la disponibilidad de sus servicios Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos llamarServidor() enviarSolicitud() empaquetaDatos() enviarSolicitud() localizaServidor() llamarServicio() desempaqueta() ejecutaServicio() empaquetaDatos() enviaRespuesta() localizaCliente() regresar() resultado() desempaqueta() Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos enviarSolicitud() localizarServidor() enviarMensaje() empaquetarDatos() enviarMensaje() desempaquetarDatos() enviarSolicitud() localizarServidor() Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos Diagrama de Clases Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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 objeto solicitado El objeto devuelve un resultado al cliente a través del ORB Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Control de peticiones ORB Máquina Cliente Máquina Servidor Cliente Objeto ORB Llamada a método Cliente Implementación O R B Stub BOA Skeleton Gestión de una llamada sobre un objeto remoto Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos 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. Responsabilidades (Registro de objetos, genereración de referencias, llamada directas a objetos) Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
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
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos VALORACION VENTAJAS Transparencia en ubicación Cambio y extensibilidad de componentes Portabilidad del sistema broker Interoperabilidad entre diferentes sistemas broker Reusabilidad DESVENTAJAS Eficiencia Restringida Baja tolerancia a fallos Prueba y debbuging Patrón de diseño broker Análisis y Diseño Orienteado a Objetos
Análisis y Diseño Orienteado a Objetos 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
Análisis y Diseño Orienteado a Objetos 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