P3 Componentes

58
Raúl Monge Raúl Monge Departamento de Informática Departamento de Informática Universidad Técnica Federico Santa María Universidad Técnica Federico Santa María Valparaíso - Chile Valparaíso - Chile [email protected] [email protected] 3ª Parte: Programación Orientada a Componentes

Transcript of P3 Componentes

Page 1: P3 Componentes

Raúl MongeRaúl MongeDepartamento de InformáticaDepartamento de Informática

Universidad Técnica Federico Santa MaríaUniversidad Técnica Federico Santa María

Valparaíso - ChileValparaíso - Chile

[email protected]@inf.utfsm.l

3ª Parte:Programación Orientada a

Componentes

Page 2: P3 Componentes

2

Contenido:

Programación, Modelos y Plataformas de Programación, Modelos y Plataformas de ComponentesComponentes

RM-ODPRM-ODP Corba de OMGCorba de OMG Java, Java/RMI y JavaBeans de SunJava, Java/RMI y JavaBeans de Sun DCOM de MicrosoftDCOM de Microsoft

Page 3: P3 Componentes

3

Programación de Sistemas Abiertos y Distribuidos

Deficiencias de la Programación Orientada a Deficiencias de la Programación Orientada a Objetos (POO):Objetos (POO): No permite separar aspectos computacionales de No permite separar aspectos computacionales de

los composicionaleslos composicionales Dificultad a la hora de reutilizar objetosDificultad a la hora de reutilizar objetos No incorpora aspectos de mercadotecnia:No incorpora aspectos de mercadotecnia:

DistribuciónDistribuciónEmpaquetamientoEmpaquetamientoAdquisición o composición tardía de Adquisición o composición tardía de

componentescomponentes

Page 4: P3 Componentes

4

Programación de Sistemas Abiertos y Distribuidos

Programación Orientada a Componentes:Programación Orientada a Componentes: ““Extensión” de la POO Extensión” de la POO Sistemas Abiertos y DistribuidosSistemas Abiertos y Distribuidos Basada en la noción de Basada en la noción de COMPONENTECOMPONENTE

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

Page 5: P3 Componentes

5

Programación Orientada a Componentes (POC)

Composición tardíaComposición tardía Entornos (de diseño y de ejecución)Entornos (de diseño y de ejecución) Eventos y comunicaciones asíncronasEventos y comunicaciones asíncronas ReutilizaciónReutilización Interfaces y contratosInterfaces y contratos Polimorfismo (subtipos, paramétrico, acotado)Polimorfismo (subtipos, paramétrico, acotado) Seguridad (a nivel de tipos y de módulos)Seguridad (a nivel de tipos y de módulos) ReflexiónReflexión

Page 6: P3 Componentes

6

Problemas Típicos de POC

ClarividenciaClarividencia Evolución de componentesEvolución de componentes Percepción del entornoPercepción del entorno ParticularizaciónParticularización Falta de soporte formalFalta de soporte formal Asincronía y carreras de eventosAsincronía y carreras de eventos InteroperabilidadInteroperabilidad

Page 7: P3 Componentes

7

Modelos de Componentes

Definen la forma de las interfaces de sus Definen la forma de las interfaces de sus componentescomponentes

Determinan los mecanismos de composición y Determinan los mecanismos de composición y comunicación entre elloscomunicación entre ellos

Especifican la forma en la que se proveen los Especifican la forma en la que se proveen los servicios (seguridad, trading, etc.)servicios (seguridad, trading, etc.)

EjemplosEjemplos: : COM, JavaBeans, CORBACOM, JavaBeans, CORBA

Page 8: P3 Componentes

8

Plataformas de Componentes Basadas en un modelo concretoBasadas en un modelo concreto Ofrecen una implementación de los conceptos y Ofrecen una implementación de los conceptos y

mecanismos del modelomecanismos del modelo Proporcionan entornos de desarrollo y ejecución Proporcionan entornos de desarrollo y ejecución

para los componentespara los componentes Suelen ofrecer pasarelas a otros modelos y Suelen ofrecer pasarelas a otros modelos y

plataformasplataformas EjemplosEjemplos: : ActiveX/OLE, Enterprise Beans, OrbixActiveX/OLE, Enterprise Beans, Orbix

Page 9: P3 Componentes

9

Componentes e Interfaces Interfaces: Interfaces:

atributos, atributos, métodos y métodos y eventoseventos

Lenguajes de definición de Interafaces (IDL)Lenguajes de definición de Interafaces (IDL) Interacción entre componentesInteracción entre componentes

RPCs para los métodosRPCs para los métodos Publish-and-subscribe para los eventosPublish-and-subscribe para los eventos Mensajes asíncronosMensajes asíncronos

Page 10: P3 Componentes

10

Plataformas de Componentes Distribuidas Componentes e InterfacesComponentes e Interfaces Contenedores de componentesContenedores de componentes Meta-informaciónMeta-información InspecciónInspección Reflexión e introspecciónReflexión e introspección Entornos de Desarrollo Integrados (IDE)Entornos de Desarrollo Integrados (IDE) Servicios y facilidadesServicios y facilidades

Page 11: P3 Componentes

11

Entornos de Desarrollo Integrados (IDE)

paletaspaletas lienzo o contenedorlienzo o contenedor editores para configurar y especializar componenteseditores para configurar y especializar componentes browsersbrowsers repositorio de componentesrepositorio de componentes acceso a intérpretes, compiladores y depuradoresacceso a intérpretes, compiladores y depuradores herramientas de control y gestión de proyectosherramientas de control y gestión de proyectos

Page 12: P3 Componentes

12

Servicios y Facilidades

Comunicaciones remotasComunicaciones remotas Servicios de DirectoriosServicios de Directorios SeguridadSeguridad TransaccionesTransacciones Gestión y AdministraciónGestión y Administración

Page 13: P3 Componentes

13

Ejemplos de Modelos y Plataformas de Componentes

RM-ODPRM-ODP CORBACORBA Java/RMI, JavaBeans y Enterprise BeansJava/RMI, JavaBeans y Enterprise Beans COM, DCOM, OLE, ActiveXCOM, DCOM, OLE, ActiveX

Page 14: P3 Componentes

14

Open Distributed Processing RM-ODPRM-ODP: Modelo de referencia para el diseño de : Modelo de referencia para el diseño de

sistemas abiertos y distribuidossistemas abiertos y distribuidos ObjetivoObjetivo: hacer transparente al usuario la : hacer transparente al usuario la

heterogeneidad del:heterogeneidad del: hardwarehardware sistemas operativossistemas operativos redesredes lenguajes de programaciónlenguajes de programación bases de datosbases de datos tipos de gestióntipos de gestión

Page 15: P3 Componentes

15

Open Distributed Processing RM-ODPRM-ODP se divide en: se divide en:

Descripción general y recomendaciones de usoDescripción general y recomendaciones de uso Modelo descriptivoModelo descriptivo Modelo prescriptivoModelo prescriptivo Semántica arquitectónicaSemántica arquitectónica

Conceptos fundamentalesConceptos fundamentales:: TransparenciaTransparencia Perspectivas: empresa, información, computacional, Perspectivas: empresa, información, computacional,

ingeniería, tecnológicoingeniería, tecnológico Funciones y servicios comunesFunciones y servicios comunes Corredor de serviciosCorredor de servicios

Page 16: P3 Componentes

16

CORBA:Common Object Request Broker Architecture

OMGOMG: Object Management Group (1989): Object Management Group (1989) Definición de estándares para permitir Definición de estándares para permitir

interoperabilidad y portabilidadinteroperabilidad y portabilidad OMAOMA: Object Management Architecture: Object Management Architecture ORBORB: Object Request Broker (: Object Request Broker (busbus de objetos): de objetos):

Bus de datos para la comunicación entre objetosBus de datos para la comunicación entre objetos Transparencia de la heterogeneidad, dispersión y Transparencia de la heterogeneidad, dispersión y

activación de objetos en sistemas abiertos y activación de objetos en sistemas abiertos y distribuidosdistribuidos

Page 17: P3 Componentes

17

CORBA 1.1 Primera versión de CORBA (1991)Primera versión de CORBA (1991) Descripción concreta de las interfaces y los servicios Descripción concreta de las interfaces y los servicios

que deben proporcionar los implementadores de ORBsque deben proporcionar los implementadores de ORBs Elementos básicos de CORBA 1.1:Elementos básicos de CORBA 1.1:

Núcleo del ORBNúcleo del ORB Lenguaje de Descripción de Interfaces (IDL)Lenguaje de Descripción de Interfaces (IDL) Repositorios de interfacesRepositorios de interfaces Adaptadores de objetos (OA)Adaptadores de objetos (OA)

Page 18: P3 Componentes

18

Núcleo del ORB Objeto como pieza fundamentalObjeto como pieza fundamental Cada objeto dispone de una referencia, y se comunica Cada objeto dispone de una referencia, y se comunica

con otros objetos mediante el ORBcon otros objetos mediante el ORB Comunicación: estática y dinámicaComunicación: estática y dinámica El ORB se encarga de:El ORB se encarga de:

localizar los objetos localizar los objetos sirvientessirvientes, , activarlos (si no lo están), activarlos (si no lo están), invocar el método solicitadoinvocar el método solicitado devolver el resultado al clientedevolver el resultado al cliente

El El Adaptador de ObjetosAdaptador de Objetos (OA) se encarga de (OA) se encarga de ocultar la implementación del objeto sirvienteocultar la implementación del objeto sirviente

Page 19: P3 Componentes

19

IDL de CORBA Lenguaje textual y orientado a objetos (similar a C++) para Lenguaje textual y orientado a objetos (similar a C++) para

definir las interfaces de los objetos CORBA.definir las interfaces de los objetos CORBA. Independiente del lenguaje en que se implementan los objetos.Independiente del lenguaje en que se implementan los objetos. Soporta herencia y polimorfismo.Soporta herencia y polimorfismo. Los compiladores de IDLs se encargan de generar un conjunto Los compiladores de IDLs se encargan de generar un conjunto

de módulos descritos en el lenguaje base.de módulos descritos en el lenguaje base. Existen compiladores para los principales lenguajes:Existen compiladores para los principales lenguajes:

C, C++, Smalltalk, Java, Ada, Cobol.C, C++, Smalltalk, Java, Ada, Cobol. Las interfaces de los objetos definidos en un ORB se registran Las interfaces de los objetos definidos en un ORB se registran

en repositorios (a modo de páginas amarillas).en repositorios (a modo de páginas amarillas).

Page 20: P3 Componentes

20

Adaptador de Objetos

Estructura básica de un ORB

Object Request Broker

DII IDL Stub IDLSkelDSI

Interfaz ORB

ClienteImplementación

Servidor

Page 21: P3 Componentes

21

CORBA 2.0 CORBA 2.0 (1996)CORBA 2.0 (1996)

proporciona servicios básicos para componentes proporciona servicios básicos para componentes CORBA que estandarizan y complementan los COSS CORBA que estandarizan y complementan los COSS (Common Object Service Specification):(Common Object Service Specification):

trading, naming, events, etc.trading, naming, events, etc. ofrece mecanismos de interoperabilidad entre ofrece mecanismos de interoperabilidad entre

distintas implementaciones de ORBsdistintas implementaciones de ORBs Extensión de la arquitectura OMA:Extensión de la arquitectura OMA:

Servicios Comunes (CORBAservices)Servicios Comunes (CORBAservices) Facilidades Comunes (CORBAfacilities)Facilidades Comunes (CORBAfacilities)

Page 22: P3 Componentes

22

Servicios CORBA CORBA 2.0 proporciona 15 servicios comunes:CORBA 2.0 proporciona 15 servicios comunes:

Acceso a las referencias de los objetos (naming)Acceso a las referencias de los objetos (naming) correduría de servicios (trading)correduría de servicios (trading) localización (query)localización (query) notificación (notification) y difusión de eventos notificación (notification) y difusión de eventos

(events)(events) transacciones (OTS)transacciones (OTS) seguridad y confidencialidad (security)seguridad y confidencialidad (security) persistencia, concurrencia, reflexión, tiempo real, ...persistencia, concurrencia, reflexión, tiempo real, ...

Page 23: P3 Componentes

23

Facilidades CORBA Conjunto de servicios de nivel superior a los Conjunto de servicios de nivel superior a los

CORBAservices. Facilitan el desarrollo de aplicacionesCORBAservices. Facilitan el desarrollo de aplicaciones CORBAfacilities horizontales (de carácter general):CORBAfacilities horizontales (de carácter general):

impresión (print spooling)impresión (print spooling) gestión del sistema (system management)gestión del sistema (system management) correo electrónico (e-mail), ...correo electrónico (e-mail), ...

CORBAfacilities verticales (para dominios específicos):CORBAfacilities verticales (para dominios específicos): objetos de negocio, objetos de negocio, comercio electrónico,comercio electrónico, seguros y finanzas, ...seguros y finanzas, ...

Page 24: P3 Componentes

24

Arquitectura OMA

Object Request Broker

Servicios comunes

(CORBAservices)

Facilidades

Verticales

Facilidades

Horizontales

Objetos y

Aplicaciones

Page 25: P3 Componentes

25

GIOP y IIOP GIOPGIOP (General Inter-ORB Protocol) (General Inter-ORB Protocol)

Define todos los aspectos de interoperabilidad Define todos los aspectos de interoperabilidad entre distintos ORBs, independientemente del entre distintos ORBs, independientemente del nivel de transportenivel de transporte

IIOPIIOP (Internet Inter-ORB Protocol) (Internet Inter-ORB Protocol) GIOP + TCP/IPGIOP + TCP/IP Protocolo recomendado por OMGProtocolo recomendado por OMG Cualquier ORB que proporcione pasarelas Cualquier ORB que proporcione pasarelas

IIOP cumple el estándar CORBAIIOP cumple el estándar CORBA

Page 26: P3 Componentes

26

CORBA 3.0 CORBA 3.0 (1998) añade:CORBA 3.0 (1998) añade:

Portable Object Adapters (POAs)Portable Object Adapters (POAs)Extienden los adaptadores de objetos Extienden los adaptadores de objetos

básicos para soportar sirvientes multihebra, básicos para soportar sirvientes multihebra, persistentes, y permiten gestionar los persistentes, y permiten gestionar los sirvientes de una aplicación.sirvientes de una aplicación.

Invocaciones asíncronas (además de RPCs)Invocaciones asíncronas (además de RPCs) Paso de objetos por valor y no sólo por Paso de objetos por valor y no sólo por

referenciareferencia

Page 27: P3 Componentes

27

Implementaciones de CORBA Existen más de 25 implementaciones de Existen más de 25 implementaciones de

CORBACORBA Orbix (Iona)Orbix (Iona) Object Broker (Digital)Object Broker (Digital) Visibroker (Visigenic -Netscape)Visibroker (Visigenic -Netscape) Component Broker (IBM)Component Broker (IBM)

Page 28: P3 Componentes

28

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);

}

Page 29: P3 Componentes

29

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:

Page 30: P3 Componentes

30

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:

Page 31: P3 Componentes

31

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])); }}

Page 32: P3 Componentes

32

Java/RMI, JavaBeans y Enterprise Beans Gran auge de InternetGran auge de Internet Inicialmente: acceso pasivo a la informaciónInicialmente: acceso pasivo a la información 1995: CGI (Common Gateway Interface)1995: CGI (Common Gateway Interface) 1996: Uso de Java en Internet1996: Uso de Java en Internet Java como lenguaje de programación orientado a Java como lenguaje de programación orientado a

objetosobjetos JavaBeans: Un modelo de componentesJavaBeans: Un modelo de componentes Diversas extensiones: Glasgow, Edinburgh, Diversas extensiones: Glasgow, Edinburgh,

Enterprise BeansEnterprise Beans

Page 33: P3 Componentes

33

Java Java es un lenguaje “simple, distribuido, Java es un lenguaje “simple, distribuido,

interpretado, robusto, seguro, independiente de interpretado, robusto, seguro, independiente de la arquitectura, portable, multihebra y la arquitectura, portable, multihebra y dinámico”dinámico”

““Parcialmente” interpretado (Parcialmente” interpretado (bytecodesbytecodes)) Java aporta las “applets”Java aporta las “applets” Proliferación de plataformas soportando JVMProliferación de plataformas soportando JVM Inclusión en los navegadores webInclusión en los navegadores web

Page 34: P3 Componentes

34

Java La computación no sólo se realiza en el servidor, sino La computación no sólo se realiza en el servidor, sino

que es posible que los clientes ejecuten código que que es posible que los clientes ejecuten código que tomantoman del servidor ( del servidor (appletsapplets).).

La seguridad se comprueba tanto durante la carga La seguridad se comprueba tanto durante la carga como la ejecución de las como la ejecución de las appletsapplets..

Paquetes de especial relevancia para aplicaciones Paquetes de especial relevancia para aplicaciones distribuidas:distribuidas: Empaquetamiento secuencial de objetos Empaquetamiento secuencial de objetos

(serialization)(serialization) Acceso a base de datos (JDBC)Acceso a base de datos (JDBC) Invocación remota de métodos (RMI)Invocación remota de métodos (RMI)

Page 35: P3 Componentes

35

Empaquetamiento secuencial Objetos empaquetables como secuencias de Objetos empaquetables como secuencias de

datos.datos. Cada Cada streamstream incluye la identidad del objeto, su incluye la identidad del objeto, su

estado y referencias a otros objetos.estado y referencias a otros objetos. No existen problemas con la representación de No existen problemas con la representación de

los datos (como ocurre en otras plataformas los datos (como ocurre en otras plataformas distribuidas), debido a la existencia de JVM.distribuidas), debido a la existencia de JVM.

Page 36: P3 Componentes

36

Java/RMI RMI (Remote Method Invocation) implementa un RMI (Remote Method Invocation) implementa un

modelo cliente-servidor donde el cliente puede invocar modelo cliente-servidor donde el cliente puede invocar de forma remota los métodos del servidor.de forma remota los métodos del servidor.

Extensión del concepto de RPC: los argumentos de las Extensión del concepto de RPC: los argumentos de las funciones invocadas pueden ser objetos que son funciones invocadas pueden ser objetos que son transferidos de una máquina a otra.transferidos de una máquina a otra.

RMI es un mecanismo dependiente del lenguaje (es una RMI es un mecanismo dependiente del lenguaje (es una extensión de Java), pero es independiente de la extensión de Java), pero es independiente de la plataforma (al estar basado en la máquina virtual JVM)plataforma (al estar basado en la máquina virtual JVM)

Page 37: P3 Componentes

37

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 ...”:

Page 38: P3 Componentes

38

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) { ... }}

Page 39: P3 Componentes

39

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(); }}

Page 40: P3 Componentes

40

Arquitectura de 3 Niveles (3-tier) Java no define una infraestructura de objetos Java no define una infraestructura de objetos

distribuidos, sino que proporciona herramientas distribuidos, sino que proporciona herramientas para su construcción y comunicación.para su construcción y comunicación.

RMI JDBCServidores

Aplicaciones

Applets

Cliente:Interfaces

deusuario

B.D.

Almacenamientopersistentede datos

Page 41: P3 Componentes

41

JavaBeans JavaBeansJavaBeans (Sun Microsystems 1997) es un (Sun Microsystems 1997) es un

estándar sobre Java que define el modelo de estándar sobre Java que define el modelo de componentes Sun.componentes Sun.

BeansBeans: componentes del modelo: componentes del modelo Componentes software reutilizables que Componentes software reutilizables que

pueden ser manipuladas de forma visual por pueden ser manipuladas de forma visual por herramientas de desarrollo de aplicacionesherramientas de desarrollo de aplicaciones

Granularidad y funcionalidad de las beans Granularidad y funcionalidad de las beans muy distintas: botón, hoja de cálculo, etc.muy distintas: botón, hoja de cálculo, etc.

Page 42: P3 Componentes

42

JavaBeans InterfazInterfaz: atributos, métodos y eventos.: atributos, métodos y eventos. InspecciónInspección: a través de las herramientas visuales.: a través de las herramientas visuales. ParticularizaciónParticularización: para adecuar la : para adecuar la beanbean a los a los

requisitos del usuario o aplicación. Se realiza requisitos del usuario o aplicación. Se realiza mediante la configuración de ciertos parámetros.mediante la configuración de ciertos parámetros.

PersistenciaPersistencia: el estado de cada : el estado de cada beanbean debe debe almacenarse para ser restaurado con almacenarse para ser restaurado con posterioridadposterioridad

Page 43: P3 Componentes

43

JavaBeans Inspección y particularización mediante la forma de Inspección y particularización mediante la forma de

acceder a sus atributos o acceder a sus atributos o propiedadespropiedades. Para cada . Para cada atributo X de tipo T, la atributo X de tipo T, la beanbean debe soportar métodos: debe soportar métodos: public T getX();public T getX(); public void setX(T x);public void setX(T x);

Las beans visuales heredan Las beans visuales heredan java.awt.Componentjava.awt.Component Persistencia mediante la secuenciación, proporcionada Persistencia mediante la secuenciación, proporcionada

gracias al paquete gracias al paquete SerializationSerialization de Java. de Java. Extensiones: Glasgow, Edinburgh, Enterprise Beans.Extensiones: Glasgow, Edinburgh, Enterprise Beans.

Page 44: P3 Componentes

44

Ejemplo con JavaBeans (1/2)

// fichero btranslator.javapublic class btranslator { public String translate(String expr) { .... la implementación iría aquí ..... }}

Page 45: P3 Componentes

45

Ejemplo con JavaBeans (2/2)

// fichero beanscliente.javaimport java.beans.Beans;public class beanscliente extends Beans { public static void main (String args[]) { btranslator TX; String s = new String(args[1]); ClassLoader cl = null; //system loader by default try { TX = (btranslator)Beans.instantiate(cl,"btranslator"); System.out.println(s+"->"+TX.translate(s)); } catch (Exception e) { e.printStackTrace(); System.exit(1); } }}

Page 46: P3 Componentes

46

Component Object Model

Microsoft (Rogerson 1997, Box 1998)Microsoft (Rogerson 1997, Box 1998) COMCOM DCOMDCOM OLEOLE ActiveXActiveX

Page 47: P3 Componentes

47

COM Modelo de componentes de Microsoft, definiendo:Modelo de componentes de Microsoft, definiendo:

la creación de dichos componentes, la creación de dichos componentes, la construcción de aplicaciones sobre ellos.la construcción de aplicaciones sobre ellos.

COM establece un estándar binario de interoperabilidad COM establece un estándar binario de interoperabilidad entre componentes (independencia de los lenguajes y entre componentes (independencia de los lenguajes y plataformas).plataformas).

COM se basa en la noción de interfaz:COM se basa en la noción de interfaz: nivel conceptualnivel conceptual: conjunto de funciones que : conjunto de funciones que

implementa una componente.implementa una componente. nivel binarionivel binario: puntero a una estructura en memoria, : puntero a una estructura en memoria,

compuesta por un puntero (compuesta por un puntero (NodoNodo) a un vector de ) a un vector de punteros a funciones (punteros a funciones (virtual tablevirtual table - -vtablevtable-).-).

Page 48: P3 Componentes

48

COMPONENTE

COM La representación binaria de un interfaz COM proviene La representación binaria de un interfaz COM proviene

de la estructura interna que utiliza el compilador C++ de la estructura interna que utiliza el compilador C++ de Microsoft para representar clases base abstractas:de Microsoft para representar clases base abstractas:

A partir de este concepto de interfaz, COM define un estándar A partir de este concepto de interfaz, COM define un estándar binario para la invocación de funciones.binario para la invocación de funciones.

Interfaz Nodo

...

Op1

Op2

OpN

Page 49: P3 Componentes

49

COM Las interfaces COM son inmutables.Las interfaces COM son inmutables. Si se desea extender la funcionalidad de una interfaz se Si se desea extender la funcionalidad de una interfaz se

debe definir una nueva interfaz.debe definir una nueva interfaz. Cada componente puede tener varias interfaces:Cada componente puede tener varias interfaces:

IUnknown

IOleObject

IDataObject

IPersistStorage

IOleDocument

Page 50: P3 Componentes

50

COM Toda interfaz COM posee:Toda interfaz COM posee:

identificativo global único (IDD)identificativo global único (IDD) nombre simbólico (que debe comenzar por I)nombre simbólico (que debe comenzar por I)

Descripción de interfaces mediante COM IDL.Descripción de interfaces mediante COM IDL. Todas las componentes deben implementar una interfaz Todas las componentes deben implementar una interfaz

común común IUnknownIUnknown::

interface IUnknown { HRESULT QueryInterface([in] const IID id, [out,iid_is(idd)] IUnknown iid); unsigned long AddRef(); unsigned long Release();}

Page 51: P3 Componentes

51

COM Creación de componentes a través de Creación de componentes a través de fábricas de clasesfábricas de clases

((Class FactoriesClass Factories)) Un servidor es un objeto binario ejecutable que Un servidor es un objeto binario ejecutable que

empaqueta un conjunto de fábricas de clases, junto con empaqueta un conjunto de fábricas de clases, junto con las implementaciones de sus componentes:las implementaciones de sus componentes: servidores servidores internosinternos ( (in-process serversin-process servers)) servidores servidores localeslocales ( (local serverslocal servers)) servidores servidores remotosremotos ( (remote serversremote servers))

Reutilización: delegación y agregaciónReutilización: delegación y agregación Invocación dinámica de funciones (Invocación dinámica de funciones (IDispatchIDispatch))

.dll

.exe

Page 52: P3 Componentes

52

DCOM

DistributedDistributed COM COM: Extensión de COM para soportar : Extensión de COM para soportar invocación remota de procedimientos entre clientes y invocación remota de procedimientos entre clientes y servidores:servidores: proxiesproxies (apoderados) (apoderados) stubsstubs (juntas) (juntas)

Algunos servicios adicionales:Algunos servicios adicionales: seguridad,seguridad, aceleración de las operaciones remotasaceleración de las operaciones remotas detección de fallos en las comunicacionesdetección de fallos en las comunicaciones ......

Page 53: P3 Componentes

53

Herramientas COM La programación en COM es laboriosa.La programación en COM es laboriosa. El compilador MIDL genera a partir de descripciones El compilador MIDL genera a partir de descripciones

en COM IDL, la información necesaria para que los en COM IDL, la información necesaria para que los componentes funcionen en un entorno COM.componentes funcionen en un entorno COM.

Necesidad de herramientas:Necesidad de herramientas: Visual C++Visual C++

Aportación de servicios básicos (Aportación de servicios básicos (IDataObjectIDataObject):): invocación dinámica, transferencia uniforme de invocación dinámica, transferencia uniforme de

datos, etc.datos, etc.

Page 54: P3 Componentes

54

OLE Object Linking and EmbeddingObject Linking and Embedding Estándar para documentos compuestos de MicrosoftEstándar para documentos compuestos de Microsoft OLE es una colección de interfaces que permite el OLE es una colección de interfaces que permite el

desarrollo y ejecución de documentos compuestos.desarrollo y ejecución de documentos compuestos. ContenedoresContenedores: almacenan partes de distinta procedencia: almacenan partes de distinta procedencia ServidoresServidores: modelan el contenido de los documentos: modelan el contenido de los documentos La mayoría de las grandes aplicaciones de Microsoft son La mayoría de las grandes aplicaciones de Microsoft son

contenedores y servidores a la vez:contenedores y servidores a la vez: Word es un típico servidor, que permite la inserción Word es un típico servidor, que permite la inserción

de documentos.de documentos.

Page 55: P3 Componentes

55

Active X Estándar de Microsoft para sus componentes visuales, Estándar de Microsoft para sus componentes visuales,

denominados denominados controlescontroles.. Granularidad diversa: de botones a hojas de cálculo.Granularidad diversa: de botones a hojas de cálculo. Los controles pueden residir en cualquier tipo de Los controles pueden residir en cualquier tipo de

documento.documento.

Active X OCX VBX

Page 56: P3 Componentes

56

La nueva arquitectura de MS MDCA (MDCA (Microsoft Distributed Component ArchitectureMicrosoft Distributed Component Architecture)) Estructurado en torno a Java, COM y DCOM.Estructurado en torno a Java, COM y DCOM. Ofrece servicios similares a los de Ofrece servicios similares a los de CORBAservicesCORBAservices.. Comunicación asíncrona basada en Comunicación asíncrona basada en Microsoft Message Microsoft Message

Queue ServerQueue Server.. COM+ es otra extensión de COM que resuelve algunas COM+ es otra extensión de COM que resuelve algunas

deficiencias: recolección, gestión de referencias, ...deficiencias: recolección, gestión de referencias, ...

Page 57: P3 Componentes

57

Bibliografía S. Baker. “S. Baker. “CORBA Distributed ObjectsCORBA Distributed Objects”, Addison-”, Addison-

Wesley, 1997Wesley, 1997 M. Fayad, D. Schmidt, “Object-Oriented Application M. Fayad, D. Schmidt, “Object-Oriented Application

Frameworks”, Frameworks”, CACMCACM, Vol. 40, No. 10, Octubre 1997., Vol. 40, No. 10, Octubre 1997. Javasoft, “Javasoft, “Using the Beans Development KitUsing the Beans Development Kit”, ”,

September 1997.September 1997. Roger Sessions “Roger Sessions “COM and DCOM: Micrsoft's Vision COM and DCOM: Micrsoft's Vision

for Distributed Objectsfor Distributed Objects”, John Wiley & Sons, 1998.”, John Wiley & Sons, 1998. C. Szyperski. “C. Szyperski. “Component Software. Beyond Object-Component Software. Beyond Object-

Oriented ProgrammingOriented Programming”, Addison-Wesley. 1998.”, Addison-Wesley. 1998.

Page 58: P3 Componentes

58

Enlaces de Interés Columna Beyond Objects, Columna Beyond Objects, Software DevelopmentSoftware Development Magazine Magazine

http://www.sdmagazine.com/features/uml/beyondobjects/http://www.sdmagazine.com/features/uml/beyondobjects/ RM-ODP: Open Distributed Processing Reference ModelRM-ODP: Open Distributed Processing Reference Model

http://uml.fsarch.com/RM-ODP/index.htmlhttp://uml.fsarch.com/RM-ODP/index.html OMGOMG

http://www.omg.orghttp://www.omg.org Douglas Schmidt: Corba DocumentationDouglas Schmidt: Corba Documentation

http://www.cs.wustl.edu/~schmidt/corba.htmlhttp://www.cs.wustl.edu/~schmidt/corba.html Java Beans SpecJava Beans Spec

http://java.sun.com/products/javabeans/docs/spec.htmlhttp://java.sun.com/products/javabeans/docs/spec.html .NET de Microsoft.NET de Microsoft

http://www.microsoft.com/net/default.asphttp://www.microsoft.com/net/default.asp