Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ral Monge
Departamento de Informtica Universidad Tcnica Federico Santa Mara Valparaso - Chile rmonge@inf.utfsm.l
Contenido:
Programacin, Modelos y Plataformas de Componentes RM-ODP Corba de OMG Java, Java/RMI y JavaBeans de Sun DCOM de Microsoft
Deficiencias de la Programacin Orientada a Objetos (POO): No permite separar aspectos computacionales de los composicionales Dificultad a la hora de reutilizar objetos No incorpora aspectos de mercadotecnia: Distribucin Empaquetamiento Adquisicin o composicin tarda de 3 componentes
Programacin Orientada a Componentes: Extensin de la POO Sistemas Abiertos y Distribuidos Basada en la nocin de COMPONENTE
Unidad de composicin 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
4
Composicin tarda Entornos (de diseo y de ejecucin) Eventos y comunicaciones asncronas Reutilizacin Interfaces y contratos Polimorfismo (subtipos, paramtrico, acotado) Seguridad (a nivel de tipos y de mdulos) Reflexin
5
Modelos de Componentes
Definen la forma de las interfaces de sus componentes Determinan los mecanismos de composicin y comunicacin entre ellos Especifican la forma en la que se proveen los servicios (seguridad, trading, etc.) Ejemplos: COM, JavaBeans, CORBA
Plataformas de Componentes
Basadas en un modelo concreto Ofrecen una implementacin de los conceptos y mecanismos del modelo Proporcionan entornos de desarrollo y ejecucin para los componentes Suelen ofrecer pasarelas a otros modelos y plataformas Ejemplos: ActiveX/OLE, Enterprise Beans, Orbix
Componentes e Interfaces
Interfaces: atributos, mtodos y eventos Lenguajes de definicin de Interafaces (IDL) Interaccin entre componentes RPCs para los mtodos Publish-and-subscribe para los eventos Mensajes asncronos
9
10
paletas lienzo o contenedor editores para configurar y especializar componentes browsers repositorio de componentes acceso a intrpretes, compiladores y depuradores herramientas de control y gestin de proyectos
11
Servicios y Facilidades
Comunicaciones remotas Servicios de Directorios Seguridad Transacciones Gestin y Administracin
12
RM-ODP CORBA Java/RMI, JavaBeans y Enterprise Beans COM, DCOM, OLE, ActiveX
13
RM-ODP: Modelo de referencia para el diseo de sistemas abiertos y distribuidos Objetivo: hacer transparente al usuario la heterogeneidad del: hardware sistemas operativos redes lenguajes de programacin bases de datos tipos de gestin
14
RM-ODP se divide en: Descripcin general y recomendaciones de uso Modelo descriptivo Modelo prescriptivo Semntica arquitectnica Conceptos fundamentales: Transparencia Perspectivas: empresa, informacin, computacional, ingeniera, tecnolgico Funciones y servicios comunes 15 Corredor de servicios
CORBA:
Common Object Request Broker Architecture
OMG: Object Management Group (1989) Definicin de estndares para permitir interoperabilidad y portabilidad OMA: Object Management Architecture ORB: Object Request Broker (bus de objetos): Bus de datos para la comunicacin entre objetos Transparencia de la heterogeneidad, dispersin y activacin de objetos en sistemas abiertos y distribuidos
16
CORBA 1.1
Primera versin de CORBA (1991) Descripcin concreta de las interfaces y los servicios que deben proporcionar los implementadores de ORBs Elementos bsicos de CORBA 1.1: Ncleo del ORB Lenguaje de Descripcin de Interfaces (IDL) Repositorios de interfaces Adaptadores de objetos (OA)
17
Objeto como pieza fundamental Cada objeto dispone de una referencia, y se comunica con otros objetos mediante el ORB Comunicacin: esttica y dinmica El ORB se encarga de: localizar los objetos sirvientes, activarlos (si no lo estn), invocar el mtodo solicitado devolver el resultado al cliente El Adaptador de Objetos (OA) se encarga de ocultar la implementacin del objeto sirviente
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 mdulos 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 pginas amarillas).
19
Implementacin Servidor
DSI IDLSkel
20
CORBA 2.0
CORBA 2.0 (1996) proporciona servicios bsicos 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 Extensin de la arquitectura OMA: Servicios Comunes (CORBAservices) Facilidades Comunes (CORBAfacilities)
21
Servicios CORBA
CORBA 2.0 proporciona 15 servicios comunes: Acceso a las referencias de los objetos (naming) corredura de servicios (trading) localizacin (query) notificacin (notification) y difusin de eventos (events) transacciones (OTS) seguridad y confidencialidad (security) persistencia, concurrencia, reflexin, tiempo real, ...
22
Facilidades CORBA
Conjunto de servicios de nivel superior a los CORBAservices. Facilitan el desarrollo de aplicaciones CORBAfacilities horizontales (de carcter general): impresin (print spooling) gestin del sistema (system management) correo electrnico (e-mail), ... CORBAfacilities verticales (para dominios especficos): objetos de negocio, comercio electrnico, seguros y finanzas, ...
23
Arquitectura OMA
Objetos y Aplicaciones Facilidades Verticales Facilidades Horizontales
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 estndar CORBA
25
CORBA 3.0
CORBA 3.0 (1998) aade: Portable Object Adapters (POAs) Extienden los adaptadores de objetos bsicos para soportar sirvientes multihebra, persistentes, y permiten gestionar los sirvientes de una aplicacin. Invocaciones asncronas (adems de RPCs) Paso de objetos por valor y no slo por referencia
26
Implementaciones de CORBA
Existen ms de 25 implementaciones de CORBA Orbix (Iona) Object Broker (Digital) Visibroker (Visigenic -Netscape) Component Broker (IBM)
27
//fichero Translator.java //Generated by the OrbixWeb IDL compiler public interface Translator extends org.omg.CORBA.Object { public String translate (String frase); }
28
Cdigo 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])); } } 31
Gran auge de Internet Inicialmente: acceso pasivo a la informacin 1995: CGI (Common Gateway Interface) 1996: Uso de Java en Internet Java como lenguaje de programacin orientado a objetos JavaBeans: Un modelo de componentes Diversas extensiones: Glasgow, Edinburgh, Enterprise Beans
32
Java
Java es un lenguaje simple, distribuido, interpretado, robusto, seguro, independiente de la arquitectura, portable, multihebra y dinmico Parcialmente interpretado (bytecodes) Java aporta las applets Proliferacin de plataformas soportando JVM Inclusin en los navegadores web
33
Java
La computacin no slo se realiza en el servidor, sino que es posible que los clientes ejecuten cdigo que toman del servidor (applets). La seguridad se comprueba tanto durante la carga como la ejecucin de las applets. Paquetes de especial relevancia para aplicaciones distribuidas: Empaquetamiento secuencial de objetos (serialization) Acceso a base de datos (JDBC) Invocacin remota de mtodos (RMI)
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 representacin de los datos (como ocurre en otras plataformas distribuidas), debido a la existencia de JVM.
35
Java/RMI
RMI (Remote Method Invocation) implementa un modelo cliente-servidor donde el cliente puede invocar de forma remota los mtodos del servidor. Extensin del concepto de RPC: los argumentos de las funciones invocadas pueden ser objetos que son transferidos de una mquina a otra. RMI es un mecanismo dependiente del lenguaje (es una extensin de Java), pero es independiente de la plataforma (al estar basado en la mquina virtual JVM)
36
37
39
Java no define una infraestructura de objetos distribuidos, sino que proporciona herramientas para su construccin y comunicacin.
RMI JDBC
Applets
Cliente: Interfaces de usuario
Servidores
Aplicaciones
B.D.
Almacenamiento persistente de datos
40
JavaBeans
JavaBeans (Sun Microsystems 1997) es un estndar sobre Java que define el modelo de componentes Sun. Beans: componentes del modelo Componentes software reutilizables que pueden ser manipuladas de forma visual por herramientas de desarrollo de aplicaciones Granularidad y funcionalidad de las beans muy distintas: botn, hoja de clculo, etc.
41
JavaBeans
Interfaz: atributos, mtodos y eventos. Inspeccin: a travs de las herramientas visuales. Particularizacin: para adecuar la bean a los requisitos del usuario o aplicacin. Se realiza mediante la configuracin de ciertos parmetros. Persistencia: el estado de cada bean debe almacenarse para ser restaurado con posterioridad
42
JavaBeans
Inspeccin y particularizacin mediante la forma de acceder a sus atributos o propiedades. Para cada atributo X de tipo T, la bean debe soportar mtodos: public T getX(); public void setX(T x); Las beans visuales heredan java.awt.Component Persistencia mediante la secuenciacin, proporcionada gracias al paquete Serialization de Java. Extensiones: Glasgow, Edinburgh, Enterprise Beans.
43
44
46
COM
Modelo de componentes de Microsoft, definiendo: la creacin de dichos componentes, la construccin de aplicaciones sobre ellos. COM establece un estndar binario de interoperabilidad entre componentes (independencia de los lenguajes y plataformas). COM se basa en la nocin de interfaz: nivel conceptual: conjunto de funciones que implementa una componente. nivel binario: puntero a una estructura en memoria, compuesta por un puntero (Nodo) a un vector de punteros a funciones (virtual table -vtable-).
47
COM
La representacin binaria de un interfaz COM proviene de la estructura interna que utiliza el compilador C++ de Microsoft para representar clases base abstractas:
Nodo Op1 Op2
Interfaz
...
COMPONENTE
OpN
A partir de este concepto de interfaz, COM define un estndar binario para la invocacin de funciones.
48
COM
Las interfaces COM son inmutables. Si se desea extender la funcionalidad de una interfaz se debe definir una nueva interfaz. Cada componente puede tener varias interfaces:
IUnknown IOleObject IDataObject IPersistStorage IOleDocument
49
COM
Toda interfaz COM posee: identificativo global nico (IDD) nombre simblico (que debe comenzar por I) Descripcin de interfaces mediante COM IDL. Todas las componentes deben implementar una interfaz comn IUnknown:
interface IUnknown { HRESULT QueryInterface([in] const IID id, [out,iid_is(idd)] IUnknown iid); unsigned long AddRef(); unsigned long Release(); }
50
COM
Creacin de componentes a travs de fbricas de clases (Class Factories) Un servidor es un objeto binario ejecutable que empaqueta un conjunto de fbricas de clases, junto con las implementaciones de sus componentes: servidores internos (in-process servers) .dll servidores locales (local servers) .exe servidores remotos (remote servers) Reutilizacin: delegacin y agregacin Invocacin dinmica de funciones (IDispatch)
51
DCOM
Distributed COM: Extensin de COM para soportar invocacin remota de procedimientos entre clientes y servidores: proxies (apoderados) stubs (juntas) Algunos servicios adicionales: seguridad, aceleracin de las operaciones remotas deteccin de fallos en las comunicaciones ...
52
Herramientas COM
La programacin en COM es laboriosa. El compilador MIDL genera a partir de descripciones en COM IDL, la informacin necesaria para que los componentes funcionen en un entorno COM. Necesidad de herramientas: Visual C++ Aportacin de servicios bsicos (IDataObject): invocacin dinmica, transferencia uniforme de datos, etc.
53
OLE
Object Linking and Embedding Estndar para documentos compuestos de Microsoft OLE es una coleccin de interfaces que permite el desarrollo y ejecucin de documentos compuestos. Contenedores: almacenan partes de distinta procedencia Servidores: modelan el contenido de los documentos La mayora de las grandes aplicaciones de Microsoft son contenedores y servidores a la vez: Word es un tpico servidor, que permite la insercin de documentos.
54
Active X
Estndar de Microsoft para sus componentes visuales, denominados controles. Granularidad diversa: de botones a hojas de clculo. Los controles pueden residir en cualquier tipo de documento. Active X OCX VBX
55
La nueva arquitectura de MS
MDCA (Microsoft Distributed Component Architecture) Estructurado en torno a Java, COM y DCOM. Ofrece servicios similares a los de CORBAservices. Comunicacin asncrona basada en Microsoft Message Queue Server. COM+ es otra extensin de COM que resuelve algunas deficiencias: recoleccin, gestin de referencias, ...
56
Bibliografa
S. Baker. CORBA Distributed Objects, AddisonWesley, 1997 M. Fayad, D. Schmidt, Object-Oriented Application Frameworks, CACM, Vol. 40, No. 10, Octubre 1997. Javasoft, Using the Beans Development Kit, September 1997. Roger Sessions COM and DCOM: Micrsoft's Vision for Distributed Objects, John Wiley & Sons, 1998. C. Szyperski. Component Software. Beyond ObjectOriented Programming, Addison-Wesley. 1998.
57
Enlaces de Inters
OMG
http://www.omg.org
.NET de Microsoft
http://www.microsoft.com/net/default.asp
58