3ª Parte: Programación Orientada a Componentes
description
Transcript of 3ª Parte: Programación Orientada a 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
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
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
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
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
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
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
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
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
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
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
12
Servicios y Facilidades
Comunicaciones remotasComunicaciones remotas Servicios de DirectoriosServicios de Directorios SeguridadSeguridad TransaccionesTransacciones Gestión y AdministraciónGestión y Administración
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
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
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
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
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)
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
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).
20
Adaptador de Objetos
Estructura básica de un ORB
Object Request Broker
DII IDL Stub IDLSkelDSI
Interfaz ORB
ClienteImplementación
Servidor
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)
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, ...
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, ...
24
Arquitectura OMA
Object Request Broker
Servicios comunes
(CORBAservices)
Facilidades
Verticales
Facilidades
Horizontales
Objetos y
Aplicaciones
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
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
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)
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);
}
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:
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:
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])); }}
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
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
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)
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.
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)
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 ...”:
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) { ... }}
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(); }}
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
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.
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
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.
44
Ejemplo con JavaBeans (1/2)
// fichero btranslator.javapublic class btranslator { public String translate(String expr) { .... la implementación iría aquí ..... }}
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); } }}
46
Component Object Model
Microsoft (Rogerson 1997, Box 1998)Microsoft (Rogerson 1997, Box 1998) COMCOM DCOMDCOM OLEOLE ActiveXActiveX
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-).-).
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
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
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();}
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
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 ......
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.
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.
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
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, ...
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.
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