Raúl Monge Departamento de Informática Universidad Técnica Federico Santa María Valparaíso - Chile [email_address] 3ª Part...
Contenido: <ul><li>Programación, Modelos y Plataformas de Componentes </li></ul><ul><li>RM-ODP </li></ul><ul><li>Corba de ...
Programación de  Sistemas Abiertos y Distribuidos <ul><li>Deficiencias de la Programación Orientada a Objetos (POO): </li>...
Programación de  Sistemas Abiertos y Distribuidos <ul><li>Programación Orientada a Componentes: </li></ul><ul><ul><li>“ Ex...
Programación Orientada a Componentes (POC) <ul><li>Composición tardía </li></ul><ul><li>Entornos (de diseño y de ejecución...
Problemas Típicos de POC <ul><li>Clarividencia </li></ul><ul><li>Evolución de componentes </li></ul><ul><li>Percepción del...
Modelos de Componentes <ul><li>Definen la forma de las interfaces de sus componentes </li></ul><ul><li>Determinan los meca...
Plataformas de Componentes <ul><li>Basadas en un modelo concreto </li></ul><ul><li>Ofrecen una implementación de los conce...
Componentes e Interfaces <ul><li>Interfaces:  </li></ul><ul><ul><li>atributos,  </li></ul></ul><ul><ul><li>métodos y  </li...
Plataformas de Componentes Distribuidas <ul><li>Componentes e Interfaces </li></ul><ul><li>Contenedores de componentes </l...
Entornos de Desarrollo Integrados (IDE) <ul><li>paletas </li></ul><ul><li>lienzo o contenedor </li></ul><ul><li>editores p...
Servicios y Facilidades <ul><li>Comunicaciones remotas </li></ul><ul><li>Servicios de Directorios </li></ul><ul><li>Seguri...
Ejemplos de Modelos y Plataformas de Componentes <ul><li>RM-ODP </li></ul><ul><li>CORBA </li></ul><ul><li>Java/RMI, JavaBe...
O pen  D istributed  P rocessing <ul><li>RM-ODP : Modelo de referencia para el diseño de sistemas abiertos y distribuidos ...
O pen  D istributed  P rocessing <ul><li>RM-ODP  se divide en: </li></ul><ul><ul><li>Descripción general y recomendaciones...
CORBA: C ommon  O bject  R equest  B roker  A rchitecture <ul><li>OMG : Object Management Group (1989) </li></ul><ul><ul><...
CORBA 1.1 <ul><li>Primera versión de CORBA (1991) </li></ul><ul><li>Descripción concreta de las interfaces y los servicios...
Núcleo del ORB <ul><li>Objeto como pieza fundamental </li></ul><ul><li>Cada objeto dispone de una referencia, y se comunic...
IDL de CORBA <ul><li>Lenguaje textual y orientado a objetos (similar a C++) para definir las interfaces de los objetos COR...
Estructura básica de un ORB Adaptador de Objetos Object Request Broker Interfaz ORB DII IDL Stub IDLSkel DSI Cliente Imple...
CORBA 2.0 <ul><li>CORBA 2.0 (1996) </li></ul><ul><ul><li>proporciona servicios básicos para componentes CORBA que estandar...
Servicios CORBA <ul><li>CORBA 2.0 proporciona 15 servicios comunes: </li></ul><ul><ul><li>Acceso a las referencias de los ...
Facilidades CORBA <ul><li>Conjunto de servicios de nivel superior a los CORBAservices. Facilitan el desarrollo de aplicaci...
Arquitectura OMA Object Request Broker Servicios comunes (CORBAservices) Objetos y Aplicaciones Facilidades Verticales Fac...
GIOP y IIOP <ul><li>GIOP  (General Inter-ORB Protocol) </li></ul><ul><ul><li>Define todos los aspectos de interoperabilida...
CORBA 3.0 <ul><li>CORBA 3.0 (1998) añade: </li></ul><ul><ul><li>Portable Object Adapters (POAs) </li></ul></ul><ul><ul><ul...
Implementaciones de CORBA <ul><li>Existen más de 25 implementaciones de CORBA </li></ul><ul><li>Orbix (Iona) </li></ul><ul...
Ejemplo de CORBA (1/4) $ idl translator.idl // fichero translator.idl interface Translator { string translate(in string fr...
Ejemplo de CORBA (2/4) public class TranslatorImplementation  extends _TranslatorImplBase { public String translate(String...
Ejemplo de CORBA (3/4) import IE.Iona.OrbixWeb._CORBA; import IE.Iona.OrbixWeb.CORBA.ORB; public class orbixtranslator { p...
Ejemplo de CORBA (4/4) $ putit  orbixtranslator -java orbixtranslator.class Para registrar el sirviente en el repositorio ...
Java/RMI, JavaBeans y Enterprise Beans <ul><li>Gran auge de Internet </li></ul><ul><li>Inicialmente: acceso pasivo a la in...
Java <ul><li>Java es un lenguaje “simple, distribuido, interpretado, robusto, seguro, independiente de la arquitectura, po...
Java <ul><li>La computación no sólo se realiza en el servidor, sino que es posible que los clientes ejecuten código que  t...
Empaquetamiento secuencial <ul><li>Objetos empaquetables como secuencias de datos. </li></ul><ul><li>Cada  stream  incluye...
Java/RMI <ul><li>RMI (Remote Method Invocation) implementa un modelo cliente-servidor donde el cliente puede invocar de fo...
Ejemplo de Java/RMI (1/3) public interface InterfaceHello extends java.rmi.Remote { public String hello() throws java.rmi....
Ejemplo de Java/RMI (2/3) La implementación de la interfaz y el servidor: public class ServerHello  extends UnicastRemoteO...
Ejemplo de Java/RMI (3/3) El cliente: public class ClientHello { public static void main(String argv[]) {InterfaceHello s;...
Arquitectura de 3 Niveles (3-tier) <ul><li>Java no define una infraestructura de objetos distribuidos, sino que proporcion...
JavaBeans <ul><li>JavaBeans  (Sun Microsystems 1997) es un estándar sobre Java que define el modelo de componentes Sun. </...
JavaBeans <ul><li>Interfaz : atributos, métodos y eventos. </li></ul><ul><li>Inspección : a través de las herramientas vis...
JavaBeans <ul><li>Inspección y particularización mediante la forma de acceder a sus atributos o  propiedades . Para cada a...
Ejemplo con JavaBeans (1/2) // fichero btranslator.java public class btranslator { public String translate(String expr) { ...
Ejemplo con JavaBeans (2/2) // fichero beanscliente.java import java.beans.Beans; public class beanscliente extends Beans ...
C omponent  O bject  M odel <ul><li>Microsoft (Rogerson 1997, Box 1998) </li></ul><ul><li>COM </li></ul><ul><li>DCOM </li>...
COM <ul><li>Modelo de componentes de Microsoft, definiendo: </li></ul><ul><ul><li>la creación de dichos componentes,  </li...
COM <ul><li>La representación binaria de un interfaz COM proviene de la estructura interna que utiliza el compilador C++ d...
COM <ul><li>Las interfaces COM son inmutables. </li></ul><ul><li>Si se desea extender la funcionalidad de una interfaz se ...
COM <ul><li>Toda interfaz COM posee: </li></ul><ul><ul><li>identificativo global único (IDD) </li></ul></ul><ul><ul><li>no...
COM <ul><li>Creación de componentes a través de  fábricas de clases  ( Class Factories ) </li></ul><ul><li>Un servidor es ...
DCOM <ul><li>Distributed  COM : Extensión de COM para soportar invocación remota de procedimientos entre clientes y servid...
Herramientas COM <ul><li>La programación en COM es laboriosa. </li></ul><ul><li>El compilador MIDL genera a partir de desc...
OLE <ul><li>Object Linking and Embedding </li></ul><ul><li>Estándar para documentos compuestos de Microsoft </li></ul><ul>...
Active X <ul><li>Estándar de Microsoft para sus componentes visuales, denominados  controles . </li></ul><ul><li>Granulari...
La nueva arquitectura de MS <ul><li>MDCA ( Microsoft Distributed Component Architecture ) </li></ul><ul><li>Estructurado e...
Bibliografía <ul><ul><li>S. Baker. “ CORBA Distributed Objects ”, Addison-Wesley, 1997 </li></ul></ul><ul><ul><li>M. Fayad...
Enlaces de Interés <ul><ul><li>Columna Beyond Objects,  Software Development  Magazine http://www.sdmagazine.com/features/...
Upcoming SlideShare
Loading in...5
×

P3 Componentes

1,271

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,271
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

P3 Componentes

  1. 1. Raúl Monge Departamento de Informática Universidad Técnica Federico Santa María Valparaíso - Chile [email_address] 3ª Parte: Programación Orientada a Componentes
  2. 2. Contenido: <ul><li>Programación, Modelos y Plataformas de Componentes </li></ul><ul><li>RM-ODP </li></ul><ul><li>Corba de OMG </li></ul><ul><li>Java, Java/RMI y JavaBeans de Sun </li></ul><ul><li>DCOM de Microsoft </li></ul>
  3. 3. Programación de Sistemas Abiertos y Distribuidos <ul><li>Deficiencias de la Programación Orientada a Objetos (POO): </li></ul><ul><ul><li>No permite separar aspectos computacionales de los composicionales </li></ul></ul><ul><ul><li>Dificultad a la hora de reutilizar objetos </li></ul></ul><ul><ul><li>No incorpora aspectos de mercadotecnia: </li></ul></ul><ul><ul><ul><li>Distribución </li></ul></ul></ul><ul><ul><ul><li>Empaquetamiento </li></ul></ul></ul><ul><ul><ul><li>Adquisición o composición tardía de componentes </li></ul></ul></ul>
  4. 4. Programación de Sistemas Abiertos y Distribuidos <ul><li>Programación Orientada a Componentes: </li></ul><ul><ul><li>“ Extensión” de la POO </li></ul></ul><ul><ul><li>Sistemas Abiertos y Distribuidos </li></ul></ul><ul><ul><li>Basada en la noción de COMPONENTE </li></ul></ul>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. 5. Programación Orientada a Componentes (POC) <ul><li>Composición tardía </li></ul><ul><li>Entornos (de diseño y de ejecución) </li></ul><ul><li>Eventos y comunicaciones asíncronas </li></ul><ul><li>Reutilización </li></ul><ul><li>Interfaces y contratos </li></ul><ul><li>Polimorfismo (subtipos, paramétrico, acotado) </li></ul><ul><li>Seguridad (a nivel de tipos y de módulos) </li></ul><ul><li>Reflexión </li></ul>
  6. 6. Problemas Típicos de POC <ul><li>Clarividencia </li></ul><ul><li>Evolución de componentes </li></ul><ul><li>Percepción del entorno </li></ul><ul><li>Particularización </li></ul><ul><li>Falta de soporte formal </li></ul><ul><li>Asincronía y carreras de eventos </li></ul><ul><li>Interoperabilidad </li></ul>
  7. 7. Modelos de Componentes <ul><li>Definen la forma de las interfaces de sus componentes </li></ul><ul><li>Determinan los mecanismos de composición y comunicación entre ellos </li></ul><ul><li>Especifican la forma en la que se proveen los servicios (seguridad, trading, etc.) </li></ul><ul><li>Ejemplos : COM, JavaBeans, CORBA </li></ul>
  8. 8. Plataformas de Componentes <ul><li>Basadas en un modelo concreto </li></ul><ul><li>Ofrecen una implementación de los conceptos y mecanismos del modelo </li></ul><ul><li>Proporcionan entornos de desarrollo y ejecución para los componentes </li></ul><ul><li>Suelen ofrecer pasarelas a otros modelos y plataformas </li></ul><ul><li>Ejemplos : ActiveX/OLE, Enterprise Beans, Orbix </li></ul>
  9. 9. Componentes e Interfaces <ul><li>Interfaces: </li></ul><ul><ul><li>atributos, </li></ul></ul><ul><ul><li>métodos y </li></ul></ul><ul><ul><li>eventos </li></ul></ul><ul><li>Lenguajes de definición de Interafaces (IDL) </li></ul><ul><li>Interacción entre componentes </li></ul><ul><ul><li>RPCs para los métodos </li></ul></ul><ul><ul><li>Publish-and-subscribe para los eventos </li></ul></ul><ul><ul><li>Mensajes asíncronos </li></ul></ul>
  10. 10. Plataformas de Componentes Distribuidas <ul><li>Componentes e Interfaces </li></ul><ul><li>Contenedores de componentes </li></ul><ul><li>Meta-información </li></ul><ul><li>Inspección </li></ul><ul><li>Reflexión e introspección </li></ul><ul><li>Entornos de Desarrollo Integrados (IDE) </li></ul><ul><li>Servicios y facilidades </li></ul>
  11. 11. Entornos de Desarrollo Integrados (IDE) <ul><li>paletas </li></ul><ul><li>lienzo o contenedor </li></ul><ul><li>editores para configurar y especializar componentes </li></ul><ul><li>browsers </li></ul><ul><li>repositorio de componentes </li></ul><ul><li>acceso a intérpretes, compiladores y depuradores </li></ul><ul><li>herramientas de control y gestión de proyectos </li></ul>
  12. 12. Servicios y Facilidades <ul><li>Comunicaciones remotas </li></ul><ul><li>Servicios de Directorios </li></ul><ul><li>Seguridad </li></ul><ul><li>Transacciones </li></ul><ul><li>Gestión y Administración </li></ul>
  13. 13. Ejemplos de Modelos y Plataformas de Componentes <ul><li>RM-ODP </li></ul><ul><li>CORBA </li></ul><ul><li>Java/RMI, JavaBeans y Enterprise Beans </li></ul><ul><li>COM, DCOM, OLE, ActiveX </li></ul>
  14. 14. O pen D istributed P rocessing <ul><li>RM-ODP : Modelo de referencia para el diseño de sistemas abiertos y distribuidos </li></ul><ul><li>Objetivo : hacer transparente al usuario la heterogeneidad del: </li></ul><ul><ul><li>hardware </li></ul></ul><ul><ul><li>sistemas operativos </li></ul></ul><ul><ul><li>redes </li></ul></ul><ul><ul><li>lenguajes de programación </li></ul></ul><ul><ul><li>bases de datos </li></ul></ul><ul><ul><li>tipos de gestión </li></ul></ul>
  15. 15. O pen D istributed P rocessing <ul><li>RM-ODP se divide en: </li></ul><ul><ul><li>Descripción general y recomendaciones de uso </li></ul></ul><ul><ul><li>Modelo descriptivo </li></ul></ul><ul><ul><li>Modelo prescriptivo </li></ul></ul><ul><ul><li>Semántica arquitectónica </li></ul></ul><ul><li>Conceptos fundamentales : </li></ul><ul><ul><li>Transparencia </li></ul></ul><ul><ul><li>Perspectivas: empresa, información, computacional, ingeniería, tecnológico </li></ul></ul><ul><ul><li>Funciones y servicios comunes </li></ul></ul><ul><ul><li>Corredor de servicios </li></ul></ul>
  16. 16. CORBA: C ommon O bject R equest B roker A rchitecture <ul><li>OMG : Object Management Group (1989) </li></ul><ul><ul><li>Definición de estándares para permitir interoperabilidad y portabilidad </li></ul></ul><ul><li>OMA : Object Management Architecture </li></ul><ul><li>ORB : Object Request Broker ( bus de objetos): </li></ul><ul><ul><li>Bus de datos para la comunicación entre objetos </li></ul></ul><ul><ul><li>Transparencia de la heterogeneidad, dispersión y activación de objetos en sistemas abiertos y distribuidos </li></ul></ul>
  17. 17. CORBA 1.1 <ul><li>Primera versión de CORBA (1991) </li></ul><ul><li>Descripción concreta de las interfaces y los servicios que deben proporcionar los implementadores de ORBs </li></ul><ul><li>Elementos básicos de CORBA 1.1: </li></ul><ul><ul><li>Núcleo del ORB </li></ul></ul><ul><ul><li>Lenguaje de Descripción de Interfaces (IDL) </li></ul></ul><ul><ul><li>Repositorios de interfaces </li></ul></ul><ul><ul><li>Adaptadores de objetos (OA) </li></ul></ul>
  18. 18. Núcleo del ORB <ul><li>Objeto como pieza fundamental </li></ul><ul><li>Cada objeto dispone de una referencia, y se comunica con otros objetos mediante el ORB </li></ul><ul><li>Comunicación: estática y dinámica </li></ul><ul><li>El ORB se encarga de: </li></ul><ul><ul><li>localizar los objetos sirvientes , </li></ul></ul><ul><ul><li>activarlos (si no lo están), </li></ul></ul><ul><ul><li>invocar el método solicitado </li></ul></ul><ul><ul><li>devolver el resultado al cliente </li></ul></ul><ul><li>El Adaptador de Objetos (OA) se encarga de ocultar la implementación del objeto sirviente </li></ul>
  19. 19. IDL de CORBA <ul><li>Lenguaje textual y orientado a objetos (similar a C++) para definir las interfaces de los objetos CORBA. </li></ul><ul><li>Independiente del lenguaje en que se implementan los objetos. </li></ul><ul><li>Soporta herencia y polimorfismo. </li></ul><ul><li>Los compiladores de IDLs se encargan de generar un conjunto de módulos descritos en el lenguaje base. </li></ul><ul><li>Existen compiladores para los principales lenguajes: </li></ul><ul><ul><li>C, C++, Smalltalk, Java, Ada, Cobol. </li></ul></ul><ul><li>Las interfaces de los objetos definidos en un ORB se registran en repositorios (a modo de páginas amarillas). </li></ul>
  20. 20. Estructura básica de un ORB Adaptador de Objetos Object Request Broker Interfaz ORB DII IDL Stub IDLSkel DSI Cliente Implementación Servidor
  21. 21. CORBA 2.0 <ul><li>CORBA 2.0 (1996) </li></ul><ul><ul><li>proporciona servicios básicos para componentes CORBA que estandarizan y complementan los COSS (Common Object Service Specification): </li></ul></ul><ul><ul><ul><li>trading, naming, events, etc. </li></ul></ul></ul><ul><ul><li>ofrece mecanismos de interoperabilidad entre distintas implementaciones de ORBs </li></ul></ul><ul><li>Extensión de la arquitectura OMA: </li></ul><ul><ul><li>Servicios Comunes (CORBAservices) </li></ul></ul><ul><ul><li>Facilidades Comunes (CORBAfacilities) </li></ul></ul>
  22. 22. Servicios CORBA <ul><li>CORBA 2.0 proporciona 15 servicios comunes: </li></ul><ul><ul><li>Acceso a las referencias de los objetos (naming) </li></ul></ul><ul><ul><li>correduría de servicios (trading) </li></ul></ul><ul><ul><li>localización (query) </li></ul></ul><ul><ul><li>notificación (notification) y difusión de eventos (events) </li></ul></ul><ul><ul><li>transacciones (OTS) </li></ul></ul><ul><ul><li>seguridad y confidencialidad (security) </li></ul></ul><ul><ul><li>persistencia, concurrencia, reflexión, tiempo real, ... </li></ul></ul>
  23. 23. Facilidades CORBA <ul><li>Conjunto de servicios de nivel superior a los CORBAservices. Facilitan el desarrollo de aplicaciones </li></ul><ul><li>CORBAfacilities horizontales (de carácter general): </li></ul><ul><ul><li>impresión (print spooling) </li></ul></ul><ul><ul><li>gestión del sistema (system management) </li></ul></ul><ul><ul><li>correo electrónico (e-mail), ... </li></ul></ul><ul><li>CORBAfacilities verticales (para dominios específicos): </li></ul><ul><ul><li>objetos de negocio, </li></ul></ul><ul><ul><li>comercio electrónico, </li></ul></ul><ul><ul><li>seguros y finanzas, ... </li></ul></ul>
  24. 24. Arquitectura OMA Object Request Broker Servicios comunes (CORBAservices) Objetos y Aplicaciones Facilidades Verticales Facilidades Horizontales
  25. 25. GIOP y IIOP <ul><li>GIOP (General Inter-ORB Protocol) </li></ul><ul><ul><li>Define todos los aspectos de interoperabilidad entre distintos ORBs, independientemente del nivel de transporte </li></ul></ul><ul><li>IIOP (Internet Inter-ORB Protocol) </li></ul><ul><ul><li>GIOP + TCP/IP </li></ul></ul><ul><ul><li>Protocolo recomendado por OMG </li></ul></ul><ul><ul><li>Cualquier ORB que proporcione pasarelas IIOP cumple el estándar CORBA </li></ul></ul>
  26. 26. CORBA 3.0 <ul><li>CORBA 3.0 (1998) añade: </li></ul><ul><ul><li>Portable Object Adapters (POAs) </li></ul></ul><ul><ul><ul><li>Extienden los adaptadores de objetos básicos para soportar sirvientes multihebra, persistentes, y permiten gestionar los sirvientes de una aplicación. </li></ul></ul></ul><ul><ul><li>Invocaciones asíncronas (además de RPCs) </li></ul></ul><ul><ul><li>Paso de objetos por valor y no sólo por referencia </li></ul></ul>
  27. 27. Implementaciones de CORBA <ul><li>Existen más de 25 implementaciones de CORBA </li></ul><ul><li>Orbix (Iona) </li></ul><ul><li>Object Broker (Digital) </li></ul><ul><li>Visibroker (Visigenic -Netscape) </li></ul><ul><li>Component Broker (IBM) </li></ul>
  28. 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. 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. 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(&quot;orbixtranslator&quot;); System.out.println(&quot;Shutting down server...&quot;); orb.disconnect(txImpl); System.out.println(&quot;Server exiting...&quot;); } } El código para arrancar el servidor podría ser:
  31. 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(&quot;:orbixtranslator&quot;, srvHost ); System.out.println(args[1]+&quot;->&quot;+TX.translate(args[1])); } }
  32. 32. Java/RMI, JavaBeans y Enterprise Beans <ul><li>Gran auge de Internet </li></ul><ul><li>Inicialmente: acceso pasivo a la información </li></ul><ul><li>1995: CGI (Common Gateway Interface) </li></ul><ul><li>1996: Uso de Java en Internet </li></ul><ul><li>Java como lenguaje de programación orientado a objetos </li></ul><ul><li>JavaBeans: Un modelo de componentes </li></ul><ul><li>Diversas extensiones: Glasgow, Edinburgh, Enterprise Beans </li></ul>
  33. 33. Java <ul><li>Java es un lenguaje “simple, distribuido, interpretado, robusto, seguro, independiente de la arquitectura, portable, multihebra y dinámico” </li></ul><ul><li>“ Parcialmente” interpretado ( bytecodes ) </li></ul><ul><li>Java aporta las “applets” </li></ul><ul><li>Proliferación de plataformas soportando JVM </li></ul><ul><li>Inclusión en los navegadores web </li></ul>
  34. 34. Java <ul><li>La computación no sólo se realiza en el servidor, sino que es posible que los clientes ejecuten código que toman del servidor ( applets ). </li></ul><ul><li>La seguridad se comprueba tanto durante la carga como la ejecución de las applets . </li></ul><ul><li>Paquetes de especial relevancia para aplicaciones distribuidas: </li></ul><ul><ul><li>Empaquetamiento secuencial de objetos (serialization) </li></ul></ul><ul><ul><li>Acceso a base de datos (JDBC) </li></ul></ul><ul><ul><li>Invocación remota de métodos (RMI) </li></ul></ul>
  35. 35. Empaquetamiento secuencial <ul><li>Objetos empaquetables como secuencias de datos. </li></ul><ul><li>Cada stream incluye la identidad del objeto, su estado y referencias a otros objetos. </li></ul><ul><li>No existen problemas con la representación de los datos (como ocurre en otras plataformas distribuidas), debido a la existencia de JVM. </li></ul>
  36. 36. Java/RMI <ul><li>RMI (Remote Method Invocation) implementa un modelo cliente-servidor donde el cliente puede invocar de forma remota los métodos del servidor. </li></ul><ul><li>Extensión del concepto de RPC: los argumentos de las funciones invocadas pueden ser objetos que son transferidos de una máquina a otra. </li></ul><ul><li>RMI es un mecanismo dependiente del lenguaje (es una extensión de Java), pero es independiente de la plataforma (al estar basado en la máquina virtual JVM) </li></ul>
  37. 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. 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. 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. 40. Arquitectura de 3 Niveles (3-tier) <ul><li>Java no define una infraestructura de objetos distribuidos, sino que proporciona herramientas para su construcción y comunicación. </li></ul>RMI JDBC Servidores Aplicaciones Applets Cliente: Interfaces de usuario B.D. Almacenamiento persistente de datos
  41. 41. JavaBeans <ul><li>JavaBeans (Sun Microsystems 1997) es un estándar sobre Java que define el modelo de componentes Sun. </li></ul><ul><li>Beans : componentes del modelo </li></ul><ul><ul><li>Componentes software reutilizables que pueden ser manipuladas de forma visual por herramientas de desarrollo de aplicaciones </li></ul></ul><ul><ul><li>Granularidad y funcionalidad de las beans muy distintas: botón, hoja de cálculo, etc. </li></ul></ul>
  42. 42. JavaBeans <ul><li>Interfaz : atributos, métodos y eventos. </li></ul><ul><li>Inspección : a través de las herramientas visuales. </li></ul><ul><li>Particularización : para adecuar la bean a los requisitos del usuario o aplicación. Se realiza mediante la configuración de ciertos parámetros. </li></ul><ul><li>Persistencia : el estado de cada bean debe almacenarse para ser restaurado con posterioridad </li></ul>
  43. 43. JavaBeans <ul><li>Inspección y particularización mediante la forma de acceder a sus atributos o propiedades . Para cada atributo X de tipo T, la bean debe soportar métodos: </li></ul><ul><ul><li>public T getX(); </li></ul></ul><ul><ul><li>public void setX(T x); </li></ul></ul><ul><li>Las beans visuales heredan java.awt.Component </li></ul><ul><li>Persistencia mediante la secuenciación, proporcionada gracias al paquete Serialization de Java. </li></ul><ul><li>Extensiones: Glasgow, Edinburgh, Enterprise Beans. </li></ul>
  44. 44. Ejemplo con JavaBeans (1/2) // fichero btranslator.java public class btranslator { public String translate(String expr) { .... la implementación iría aquí ..... } }
  45. 45. 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,&quot;btranslator&quot;); System.out.println(s+&quot;->&quot;+TX.translate(s)); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } }
  46. 46. C omponent O bject M odel <ul><li>Microsoft (Rogerson 1997, Box 1998) </li></ul><ul><li>COM </li></ul><ul><li>DCOM </li></ul><ul><li>OLE </li></ul><ul><li>ActiveX </li></ul>
  47. 47. COM <ul><li>Modelo de componentes de Microsoft, definiendo: </li></ul><ul><ul><li>la creación de dichos componentes, </li></ul></ul><ul><ul><li>la construcción de aplicaciones sobre ellos. </li></ul></ul><ul><li>COM establece un estándar binario de interoperabilidad entre componentes (independencia de los lenguajes y plataformas). </li></ul><ul><li>COM se basa en la noción de interfaz: </li></ul><ul><ul><li>nivel conceptual : conjunto de funciones que implementa una componente. </li></ul></ul><ul><ul><li>nivel binario : puntero a una estructura en memoria, compuesta por un puntero ( Nodo ) a un vector de punteros a funciones ( virtual table - vtable -). </li></ul></ul>
  48. 48. COM <ul><li>La representación binaria de un interfaz COM proviene de la estructura interna que utiliza el compilador C++ de Microsoft para representar clases base abstractas: </li></ul><ul><li>A partir de este concepto de interfaz, COM define un estándar binario para la invocación de funciones. </li></ul>COMPONENTE Interfaz Nodo ... Op1 Op2 OpN
  49. 49. COM <ul><li>Las interfaces COM son inmutables. </li></ul><ul><li>Si se desea extender la funcionalidad de una interfaz se debe definir una nueva interfaz. </li></ul><ul><li>Cada componente puede tener varias interfaces: </li></ul>IUnknown IOleObject IDataObject IPersistStorage IOleDocument
  50. 50. COM <ul><li>Toda interfaz COM posee: </li></ul><ul><ul><li>identificativo global único (IDD) </li></ul></ul><ul><ul><li>nombre simbólico (que debe comenzar por I) </li></ul></ul><ul><li>Descripción de interfaces mediante COM IDL. </li></ul><ul><li>Todas las componentes deben implementar una interfaz común IUnknown : </li></ul>interface IUnknown { HRESULT QueryInterface([in] const IID id, [out,iid_is(idd)] IUnknown iid); unsigned long AddRef(); unsigned long Release(); }
  51. 51. COM <ul><li>Creación de componentes a través de fábricas de clases ( Class Factories ) </li></ul><ul><li>Un servidor es un objeto binario ejecutable que empaqueta un conjunto de fábricas de clases, junto con las implementaciones de sus componentes: </li></ul><ul><ul><li>servidores internos ( in-process servers ) </li></ul></ul><ul><ul><li>servidores locales ( local servers ) </li></ul></ul><ul><ul><li>servidores remotos ( remote servers ) </li></ul></ul><ul><li>Reutilización: delegación y agregación </li></ul><ul><li>Invocación dinámica de funciones ( IDispatch ) </li></ul>.dll .exe
  52. 52. DCOM <ul><li>Distributed COM : Extensión de COM para soportar invocación remota de procedimientos entre clientes y servidores: </li></ul><ul><ul><li>proxies (apoderados) </li></ul></ul><ul><ul><li>stubs (juntas) </li></ul></ul><ul><li>Algunos servicios adicionales: </li></ul><ul><ul><li>seguridad, </li></ul></ul><ul><ul><li>aceleración de las operaciones remotas </li></ul></ul><ul><ul><li>detección de fallos en las comunicaciones </li></ul></ul><ul><ul><li>... </li></ul></ul>
  53. 53. Herramientas COM <ul><li>La programación en COM es laboriosa. </li></ul><ul><li>El compilador MIDL genera a partir de descripciones en COM IDL, la información necesaria para que los componentes funcionen en un entorno COM. </li></ul><ul><li>Necesidad de herramientas: </li></ul><ul><ul><li>Visual C++ </li></ul></ul><ul><li>Aportación de servicios básicos ( IDataObject ): </li></ul><ul><ul><li>invocación dinámica, transferencia uniforme de datos, etc. </li></ul></ul>
  54. 54. OLE <ul><li>Object Linking and Embedding </li></ul><ul><li>Estándar para documentos compuestos de Microsoft </li></ul><ul><li>OLE es una colección de interfaces que permite el desarrollo y ejecución de documentos compuestos. </li></ul><ul><li>Contenedores : almacenan partes de distinta procedencia </li></ul><ul><li>Servidores : modelan el contenido de los documentos </li></ul><ul><li>La mayoría de las grandes aplicaciones de Microsoft son contenedores y servidores a la vez: </li></ul><ul><ul><li>Word es un típico servidor, que permite la inserción de documentos. </li></ul></ul>
  55. 55. Active X <ul><li>Estándar de Microsoft para sus componentes visuales, denominados controles . </li></ul><ul><li>Granularidad diversa: de botones a hojas de cálculo. </li></ul><ul><li>Los controles pueden residir en cualquier tipo de documento. </li></ul>Active X OCX VBX
  56. 56. La nueva arquitectura de MS <ul><li>MDCA ( Microsoft Distributed Component Architecture ) </li></ul><ul><li>Estructurado en torno a Java, COM y DCOM. </li></ul><ul><li>Ofrece servicios similares a los de CORBAservices . </li></ul><ul><li>Comunicación asíncrona basada en Microsoft Message Queue Server . </li></ul><ul><li>COM+ es otra extensión de COM que resuelve algunas deficiencias: recolección, gestión de referencias, ... </li></ul>
  57. 57. Bibliografía <ul><ul><li>S. Baker. “ CORBA Distributed Objects ”, Addison-Wesley, 1997 </li></ul></ul><ul><ul><li>M. Fayad, D. Schmidt, “Object-Oriented Application Frameworks”, CACM , Vol. 40, No. 10, Octubre 1997. </li></ul></ul><ul><ul><li>Javasoft, “ Using the Beans Development Kit ”, September 1997. </li></ul></ul><ul><ul><li>Roger Sessions “ COM and DCOM: Micrsoft's Vision for Distributed Objects ”, John Wiley & Sons, 1998. </li></ul></ul><ul><ul><li>C. Szyperski. “ Component Software. Beyond Object-Oriented Programming ”, Addison-Wesley. 1998. </li></ul></ul>
  58. 58. Enlaces de Interés <ul><ul><li>Columna Beyond Objects, Software Development Magazine http://www.sdmagazine.com/features/uml/beyondobjects/ </li></ul></ul><ul><ul><li>RM-ODP: Open Distributed Processing Reference Model http://uml.fsarch.com/RM-ODP/index.html </li></ul></ul><ul><ul><li>OMG http://www.omg.org </li></ul></ul><ul><ul><li>Douglas Schmidt: Corba Documentation http://www.cs.wustl.edu/~schmidt/corba.html </li></ul></ul><ul><ul><li>Java Beans Spec http://java.sun.com/products/javabeans/docs/spec.html </li></ul></ul><ul><ul><li>.NET de Microsoft http://www.microsoft.com/net/default.asp </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×