Está en la página 1de 58

3 Parte: Programacin Orientada a Componentes

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

Programacin de Sistemas Abiertos y Distribuidos

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 de Sistemas Abiertos y Distribuidos

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

Programacin Orientada a Componentes (POC)


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

Problemas Tpicos de POC


Clarividencia Evolucin de componentes Percepcin del entorno Particularizacin Falta de soporte formal Asincrona y carreras de eventos Interoperabilidad

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

Plataformas de Componentes Distribuidas


Componentes e Interfaces Contenedores de componentes Meta-informacin Inspeccin Reflexin e introspeccin Entornos de Desarrollo Integrados (IDE) Servicios y facilidades

10

Entornos de Desarrollo Integrados (IDE)


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

Ejemplos de Modelos y Plataformas de Componentes


RM-ODP CORBA Java/RMI, JavaBeans y Enterprise Beans COM, DCOM, OLE, ActiveX

13

Open Distributed Processing


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

Open Distributed Processing

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

Ncleo del ORB


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

Estructura bsica de un ORB


Cliente
DII IDL Stub

Implementacin Servidor
DSI IDLSkel

Adaptador de Objetos Interfaz ORB

Object Request Broker

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

Object Request Broker

Servicios comunes (CORBAservices)


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

Ejemplo de CORBA (1/4)


// fichero translator.idl interface Translator { string translate(in string frase); };
$ idl translator.idl

//fichero Translator.java //Generated by the OrbixWeb IDL compiler public interface Translator extends org.omg.CORBA.Object { public String translate (String frase); }

28

Ejemplo de CORBA (2/4)


El fichero _TranslatorImplBase.java contendr el esqueleto de la implementacin, invocando toda la funcionalidad de proxies, stubs, BOAs, etc. Esta implementacin bsica se puede extender:
public class TranslatorImplementation extends _TranslatorImplBase { public String translate(String s) { ...cdigo interno de la funcin... } }
29

Ejemplo de CORBA (3/4)


El cdigo para arrancar el servidor podra ser:
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..."); } 30 }

Ejemplo de CORBA (4/4)


Para registrar el sirviente en el repositorio CORBA:
$ putit orbixtranslator -java orbixtranslator.class

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

Java/RMI, JavaBeans y Enterprise Beans


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

Ejemplo de Java/RMI (1/3)


Una interfaz para generar el string Hello ...:
public interface InterfaceHello extends java.rmi.Remote { public String hello() throws java.rmi.RemoteException }

37

Ejemplo de Java/RMI (2/3)


La implementacin 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... Im the server...;} public static void main(String argv[]) {ServerHello s; Registry registry = null; ... //Cdigo para asignar registro try {System.setSecurityManager(new RMISecurityManager()); s = new ServerHello(); registry.rebind(ServerHello,s); } catch (Exception e) { ... }
38

Ejemplo de Java/RMI (3/3)


El cliente:
public class ClientHello { public static void main(String argv[]) {InterfaceHello s; Registry registry; try {... //Cdigo 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(); } }

39

Arquitectura de 3 Niveles (3-tier)

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

Ejemplo con JavaBeans (1/2)


// fichero btranslator.java public class btranslator { public String translate(String expr) { .... la implementacin ira aqu ..... } }

44

Ejemplo con JavaBeans (2/2)


// fichero beanscliente.java import 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); } } }
45

Component Object Model


Microsoft (Rogerson 1997, Box 1998) COM DCOM OLE ActiveX

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

Columna Beyond Objects, Software Development Magazine


http://www.sdmagazine.com/features/uml/beyondobjects/

RM-ODP: Open Distributed Processing Reference Model


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

OMG
http://www.omg.org

Douglas Schmidt: Corba Documentation


http://www.cs.wustl.edu/~schmidt/corba.html

Java Beans Spec


http://java.sun.com/products/javabeans/docs/spec.html

.NET de Microsoft
http://www.microsoft.com/net/default.asp
58

También podría gustarte