Descargar

Programación orientada a componentes

Enviado por Pablo Turmero


    edu.red

    1 Contenido: Programación, Modelos y Plataformas de Componentes RM-ODP Corba de OMG Java, Java/RMI y JavaBeans de Sun DCOM de Microsoft

    edu.red

    2 Programación de Sistemas Abiertos y Distribuidos Deficiencias de la Programación Orientada a Objetos (POO): No permite separar aspectos computacionales de los composicionales Dificultad a la hora de reutilizar objetos No incorpora aspectos de mercadotecnia: Distribución Empaquetamiento Adquisición o composición tardía de componentes

    edu.red

    3 Programación de Sistemas Abiertos y Distribuidos Programación Orientada a Componentes: “Extensión” de la POO Sistemas Abiertos y Distribuidos Basada en la noción de COMPONENTE Unidad de composición de aplicaciones software que posee un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes, de forma independiente en tiempo y espacio. Szyperski, 1998

    edu.red

    4 Programación Orientada a Componentes (POC) Composición tardía Entornos (de diseño y de ejecución) Eventos y comunicaciones asíncronas Reutilización Interfaces y contratos Polimorfismo (subtipos, paramétrico, acotado) Seguridad (a nivel de tipos y de módulos) Reflexión

    edu.red

    5 Problemas Típicos de POC Clarividencia Evolución de componentes Percepción del entorno Particularización Falta de soporte formal Asincronía y carreras de eventos Interoperabilidad

    edu.red

    6 Modelos de Componentes Definen la forma de las interfaces de sus componentes Determinan los mecanismos de composición y comunicación entre ellos Especifican la forma en la que se proveen los servicios (seguridad, trading, etc.) Ejemplos: COM, JavaBeans, CORBA

    edu.red

    7 Plataformas de Componentes Basadas en un modelo concreto Ofrecen una implementación de los conceptos y mecanismos del modelo Proporcionan entornos de desarrollo y ejecución para los componentes Suelen ofrecer pasarelas a otros modelos y plataformas Ejemplos: ActiveX/OLE, Enterprise Beans, Orbix

    edu.red

    8 Componentes e Interfaces Interfaces: atributos, métodos y eventos Lenguajes de definición de Interafaces (IDL) Interacción entre componentes RPCs para los métodos Publish-and-subscribe para los eventos Mensajes asíncronos

    edu.red

    9 Plataformas de Componentes Distribuidas Componentes e Interfaces Contenedores de componentes Meta-información Inspección Reflexión e introspección Entornos de Desarrollo Integrados (IDE) Servicios y facilidades

    edu.red

    10 Entornos de Desarrollo Integrados (IDE) paletas lienzo o contenedor editores para configurar y especializar componentes browsers repositorio de componentes acceso a intérpretes, compiladores y depuradores herramientas de control y gestión de proyectos

    edu.red

    11 Servicios y Facilidades Comunicaciones remotas Servicios de Directorios Seguridad Transacciones Gestión y Administración

    edu.red

    12 Ejemplos de Modelos y Plataformas de Componentes RM-ODP CORBA Java/RMI, JavaBeans y Enterprise Beans COM, DCOM, OLE, ActiveX

    edu.red

    13 Open Distributed Processing RM-ODP: Modelo de referencia para el diseño de sistemas abiertos y distribuidos Objetivo: hacer transparente al usuario la heterogeneidad del: hardware sistemas operativos redes lenguajes de programación bases de datos tipos de gestión

    edu.red

    14 Open Distributed Processing RM-ODP se divide en: Descripción general y recomendaciones de uso Modelo descriptivo Modelo prescriptivo Semántica arquitectónica Conceptos fundamentales: Transparencia Perspectivas: empresa, información, computacional, ingeniería, tecnológico Funciones y servicios comunes Corredor de servicios

    edu.red

    15 CORBA:Common Object Request Broker Architecture OMG: Object Management Group (1989) Definición de estándares para permitir interoperabilidad y portabilidad OMA: Object Management Architecture ORB: Object Request Broker (bus de objetos): Bus de datos para la comunicación entre objetos Transparencia de la heterogeneidad, dispersión y activación de objetos en sistemas abiertos y distribuidos

    edu.red

    16 CORBA 1.1 Primera versión de CORBA (1991) Descripción concreta de las interfaces y los servicios que deben proporcionar los implementadores de ORBs Elementos básicos de CORBA 1.1: Núcleo del ORB Lenguaje de Descripción de Interfaces (IDL) Repositorios de interfaces Adaptadores de objetos (OA)

    edu.red

    17 Núcleo del ORB Objeto como pieza fundamental Cada objeto dispone de una referencia, y se comunica con otros objetos mediante el ORB Comunicación: estática y dinámica El ORB se encarga de: localizar los objetos sirvientes, activarlos (si no lo están), invocar el método solicitado devolver el resultado al cliente El Adaptador de Objetos (OA) se encarga de ocultar la implementación del objeto sirviente

    edu.red

    18 IDL de CORBA Lenguaje textual y orientado a objetos (similar a C++) para definir las interfaces de los objetos CORBA. Independiente del lenguaje en que se implementan los objetos. Soporta herencia y polimorfismo. Los compiladores de IDLs se encargan de generar un conjunto de módulos descritos en el lenguaje base. Existen compiladores para los principales lenguajes: C, C++, Smalltalk, Java, Ada, Cobol. Las interfaces de los objetos definidos en un ORB se registran en repositorios (a modo de páginas amarillas).

    edu.red

    19 Adaptador de Objetos Estructura básica de un ORB Object Request Broker (Gp:) DII (Gp:) IDL Stub

    (Gp:) IDLSkel (Gp:) DSI

    Interfaz ORB (Gp:) Cliente (Gp:) Implementación Servidor

    edu.red

    20 CORBA 2.0 CORBA 2.0 (1996) proporciona servicios básicos para componentes CORBA que estandarizan y complementan los COSS (Common Object Service Specification): trading, naming, events, etc. ofrece mecanismos de interoperabilidad entre distintas implementaciones de ORBs Extensión de la arquitectura OMA: Servicios Comunes (CORBAservices) Facilidades Comunes (CORBAfacilities)

    edu.red

    21 Servicios CORBA CORBA 2.0 proporciona 15 servicios comunes: Acceso a las referencias de los objetos (naming) correduría de servicios (trading) localización (query) notificación (notification) y difusión de eventos (events) transacciones (OTS) seguridad y confidencialidad (security) persistencia, concurrencia, reflexión, tiempo real, …

    edu.red

    22 Facilidades CORBA Conjunto de servicios de nivel superior a los CORBAservices. Facilitan el desarrollo de aplicaciones CORBAfacilities horizontales (de carácter general): impresión (print spooling) gestión del sistema (system management) correo electrónico (e-mail), … CORBAfacilities verticales (para dominios específicos): objetos de negocio, comercio electrónico, seguros y finanzas, …

    edu.red

    23 Arquitectura OMA Object Request Broker Servicios comunes (CORBAservices) (Gp:) Facilidades Verticales (Gp:) Facilidades Horizontales

    Objetos y Aplicaciones

    edu.red

    24 GIOP y IIOP GIOP (General Inter-ORB Protocol) Define todos los aspectos de interoperabilidad entre distintos ORBs, independientemente del nivel de transporte IIOP (Internet Inter-ORB Protocol) GIOP + TCP/IP Protocolo recomendado por OMG Cualquier ORB que proporcione pasarelas IIOP cumple el estándar CORBA

    edu.red

    25 CORBA 3.0 CORBA 3.0 (1998) añade: Portable Object Adapters (POAs) Extienden los adaptadores de objetos básicos para soportar sirvientes multihebra, persistentes, y permiten gestionar los sirvientes de una aplicación. Invocaciones asíncronas (además de RPCs) Paso de objetos por valor y no sólo por referencia

    edu.red

    26 Implementaciones de CORBA Existen más de 25 implementaciones de CORBA Orbix (Iona) Object Broker (Digital) Visibroker (Visigenic -Netscape) Component Broker (IBM)

    edu.red

    27 Ejemplo de CORBA (1/4) $ idl translator.idl // fichero translator.idl interface Translator { string translate(in string frase); }; //fichero Translator.java //Generated by the OrbixWeb IDL compiler public interface Translator extends org.omg.CORBA.Object { public String translate (String frase); }

    edu.red

    28 Ejemplo de CORBA (2/4) public class TranslatorImplementation extends _TranslatorImplBase { public String translate(String s) { …código interno de la función… } } El fichero _TranslatorImplBase.java contendrá el esqueleto de la implementación, invocando toda la funcionalidad de proxies, stubs, BOAs, etc. Esta implementación básica se puede extender:

    edu.red

    29 Ejemplo de CORBA (3/4) import IE.Iona.OrbixWeb._CORBA; import IE.Iona.OrbixWeb.CORBA.ORB; public class orbixtranslator { public static void main (String args[]) { Translator txImpl = null; org.omg.CORBA.ORB orb =org.omg.CORBA.ORB.init(); txImpl = new TranslatorImplementation(); _CORBA.Orbix.impl_is_ready("orbixtranslator"); System.out.println("Shutting down server…"); orb.disconnect(txImpl); System.out.println("Server exiting…"); } } El código para arrancar el servidor podría ser:

    edu.red

    30 Ejemplo de CORBA (4/4) $ putit orbixtranslator -java orbixtranslator.class Para registrar el sirviente en el repositorio CORBA: Código de un cliente: import org.omg.CORBA.ORB; import IE.Iona.OrbixWeb._CORBA; public class Cliente { public static void main(String args[]){ ORB.init(); String srvHost = new String (args[0]); Translator TX = TranslatorHelper.bind(":orbixtranslator", srvHost ); System.out.println(args[1]+"->"+TX.translate(args[1])); } }

    edu.red

    31 Java/RMI, JavaBeans y Enterprise Beans Gran auge de Internet Inicialmente: acceso pasivo a la información 1995: CGI (Common Gateway Interface) 1996: Uso de Java en Internet Java como lenguaje de programación orientado a objetos JavaBeans: Un modelo de componentes Diversas extensiones: Glasgow, Edinburgh, Enterprise Beans

    edu.red

    32 Java Java es un lenguaje “simple, distribuido, interpretado, robusto, seguro, independiente de la arquitectura, portable, multihebra y dinámico” “Parcialmente” interpretado (bytecodes) Java aporta las “applets” Proliferación de plataformas soportando JVM Inclusión en los navegadores web

    edu.red

    33 Java La computación no sólo se realiza en el servidor, sino que es posible que los clientes ejecuten código que toman del servidor (applets). La seguridad se comprueba tanto durante la carga como la ejecución de las applets. Paquetes de especial relevancia para aplicaciones distribuidas: Empaquetamiento secuencial de objetos (serialization) Acceso a base de datos (JDBC) Invocación remota de métodos (RMI)

    edu.red

    34 Empaquetamiento secuencial Objetos empaquetables como secuencias de datos. Cada stream incluye la identidad del objeto, su estado y referencias a otros objetos. No existen problemas con la representación de los datos (como ocurre en otras plataformas distribuidas), debido a la existencia de JVM.

    edu.red

    35 Java/RMI RMI (Remote Method Invocation) implementa un modelo cliente-servidor donde el cliente puede invocar de forma remota los métodos del servidor. Extensión del concepto de RPC: los argumentos de las funciones invocadas pueden ser objetos que son transferidos de una máquina a otra. RMI es un mecanismo dependiente del lenguaje (es una extensión de Java), pero es independiente de la plataforma (al estar basado en la máquina virtual JVM)

    edu.red

    36 Ejemplo de Java/RMI (1/3) public interface InterfaceHello extends java.rmi.Remote { public String hello() throws java.rmi.RemoteException } Una interfaz para generar el string “Hello …”:

    edu.red

    37 Ejemplo de Java/RMI (2/3) La implementación de la interfaz y el servidor: public class ServerHello extends UnicastRemoteObject implements InterfaceHello { public ServerHello() throws java.rmi.RemoteException {super();} public String hello() throws java.rmi.RemoteException {return “Hello… I’m the server…”;} public static void main(String argv[]) {ServerHello s; Registry registry = null; … //Código para asignar registro try {System.setSecurityManager(new RMISecurityManager()); s = new ServerHello(); registry.rebind(“ServerHello”,s); } catch (Exception e) { … } }

    edu.red

    38 Ejemplo de Java/RMI (3/3) El cliente: public class ClientHello { public static void main(String argv[]) {InterfaceHello s; Registry registry; try {… //Código para obtener registro s = (InterfaceHello(registry.lookup(“ServerHello”); System.out.println(s.hello()); } catch (Exception e) {System.out.println(“System error”); System.out.println(e.getMessage()); e.printStackTrace(); } }

    edu.red

    39 Arquitectura de 3 Niveles (3-tier) Java no define una infraestructura de objetos distribuidos, sino que proporciona herramientas para su construcción y comunicación.

    (Gp:) RMI

    (Gp:) JDBC

    (Gp:) Servidores (Gp:) Aplicaciones

    (Gp:) Applets (Gp:) Cliente: Interfaces de usuario

    (Gp:) B.D. (Gp:) Almacenamiento persistente de datos

    edu.red

    ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN LA VERSIÓN DE DESCARGA