430 likes | 662 Views
Sociedad de la Información I. Middleware . Objetos distribuidos. Bases de datos. Índice. Concepto de middleware RPC Plataformas de objetos distribuidos Plataforma RMI Bases de datos. Concepto de middleware. Aplicación distribuida:
E N D
Sociedad de la Información I Middleware. Objetos distribuidos. Bases de datos.
Índice • Concepto de middleware • RPC • Plataformas de objetos distribuidos • Plataforma RMI • Bases de datos
Concepto de middleware • Aplicación distribuida: • Aplicación compuesta de componentes SW que se ejecutan en sistemas informáticos interconectados por redes de comunicación • Problemas: • Software de diferentes fuentes/plataformas • Redes de comunicaciones heterogéneaas • Datos distribuidos y accesibles desde diferentes puntos
El middleware • Middleware • Tecnologías que permiten la integración y distribución de datos y procesos • El middleware integra: • Los sistemas de comunicaciones • El modelo de datos • Los protocolos de aplicación (transacciones)
Aplicación Aplicación Aplicación Aplicación Presentación Presentación Sesión Sesión Transporte Transporte Red Red Enlace Enlace Física Física Medios físicos Middleware / modelo OSI Aplicaciones Middleware Servicios de transporte de datos
El modelo cliente/servidor • El Middleware proporciona a los componentes de una aplicación distribuida los medios para interaccionar como cliente/servidor petición Componente cliente Componente servidor Interfaz respuesta
Interfaz de usuario Procesado de datos Servicio de datos Interfaz Interfaz El modelo en tres niveles • Las interacciones entre componentes de una aplicación distribuida se organizan según el modelo three-tier: presentation bussines logic data
Tipos de middleware • Llamada a procedimiento remoto (RPC) • Plataformas de objetos distribuidos: • CORBA, DCOM, RMI • Plataformas de componentes distribuidos: • CCM/CORBA, COM/DCOM, Java Beans • Tecnologías para aplicaciones Web: • JavaScrip, CGI, ASP, JSP, ActiveX, Applets ... • Plataformas Web: J2EE, .NET • Otras: MOM...
Middleware basado en RPC • El SW se compome de un programa principal (cliente) y procedimientos (servidores) • Los procedimientos pueden estar distribuidos de forma transparente al cliente • Cada procedimiento ofrece un interfaz • El middleware RPC permite la interacción cliente-servidor cuando el procedimiento es remoto • Estándar: OSF/DCE
remoto local Proc. A Proc. A Prog. principal Prog. principal Proc. B Proc. B RPC middleware RPC
Máquina del cliente Máquina del servidor stub del cliente Proc. A Prog. principal stub del servidor stub del cliente Proc. B bus del middleware RPC
RPC: interfaces • Cada procedimiento remoto especifica un interfaz que contiene: • El nombre del interfaz • Los servicios ofrecidos (signatura) • Lenguaje de especificación de interfaces (IDL) • EL interfaz ha de ser conocido por el cliente • Los stubs se compilan a partir de la definición del interfaz (compilador IDL)
RPC: comunicación entre stubs • Un ‘servidor de nombres’ asocia nombres con direcciones • Cuando un servidor ‘implementa’ un interfaz, se registra en el servidor de nombres • El stub del cliente pregunta al servidor de nombres por un interfaz • El servidor de nombres proporciona la dirección de un stub de servidor • Los stub de cliente y de servidor se conectan
Servidor de nombres pregunta (interfaz A) dirección del stub servidor de A registra(interfaz A, dirección del stub) stub de interfaz A RPC stub de interfaz A Proc. A Prog. principal stub de interfaz B OK RPC: comunicación entre stubs
Plataformas de objetos distribuidos Orientación a objetos: • Un sistema SW está compuesto de un conjunto de ‘objetos’ • Objeto: entidad compuesta de datos y operaciones (‘metodos’) sobre éstos • Los objetos pertenecen a una ‘clase’; cada objeto es una ‘instancia’ de su clase • Los objetos interactúan por medio de mensajes; el objeto emisor invoca un método del objeto receptor • Los objetos implementan interfaces; un interfaz define un conjunto de datos y métodos
Orientación a objetos Ventana posicion: Coords color: Color_ventana C1;Cliente v1;Ventana mover(Coords) cerrar() ... e:=estado() salir() Cliente cerrar() nombre; Nombre tipo; Tipo_cliente estado(): Estado_cliente login() salir() ...
Orientación a objetos • Propiedades de las clases: • Herencia: una clase (subclase) puede heredar todas las propiedades de otra clase (superclase) • Especialización: la subclase puede incorporar propiedades adicionales • Polimorfismo: las propiedades de una clase pueden adoptar diferentes formas en sus subclases • Ventajas: • Encapsulado de la información • Modularidad del SW • Escalabilidad de las aplicaciones • Reutilización de clases • Gestión de la complejidad
Plataformas de objetos distribuidos • Fusión de dos paradigmas: • Orientación a objetos: las aplicaciones están compuestas de objetos • Cliente-servidor: los objetos actúan como clientes o como servidores • Características: • Los objetos ‘implementan’ interfaces • Los objetos (y los interfaces) pueden ser locales o remotos • El middleware resuelve la interacción con objetos remotos
Plataformas de objetos distribuidos • Plataformas DOC (Distributed Object Computing) • CORBA (Common ORB Arquitecture) • OMG (Object Management Group) • DCOM (Distributed Component Object Model) • Microsoft • RMI (Remote Method Invocation) • Sun
RMI • RMI: remote method invocation • Sun • Lo introduce en JDK 1.1 (1996) • Integra el modelo de objetos distribuidos en Java • Facilidad de licencia • Java: multiplatafoma “write once, run anywhere”
JVM dependiente del SO Programa fuente en Java compi- lador Código Java intér- prete programa programa.class programa.java RMI: Java • Los objetos Java se ejecutan en una ‘máquina virtual’ (JVM)
RMI: Java • Partes de la JVM: • Verificador: controla el acceso de los objetos a los recursos del SO • Intérprete del código Java • Librería de clases Java estándar • Métodos nativos: operaciones específicas de la plataforma (p. e. gráficos) • Recolector de basura: elimina los objetos sin referencias • Compilador JIT (just in time...): puede compilar el código Java en un código nativo
JVM (máquina A) JVM (máquina B) objeto objeto interfaz local interfaz remoto objeto RMI middleware RMI: objetivo • RMI permite que los objetos Java puedan invocar métodos de objetos que se ejecutan en otra máquina virtual
RMI: objetos remotos • Sus métodos pueden ser invocados desde otras máquinas virtuales • Implementan un interfaz que especializa el interfaz java.rmi.Remote • ejemplo:
intrefaz remoto JVM (máquina A) JVM (máquina B) objeto objeto comp. RMI stub skeleton RMI middleware RMI: comunicación • El interfaz remoto (escrito en Java) se compila, generando un stub y un skeleton
intrefaz remoto JVM (máquina A) JVM (máquina B) objeto objeto comp. RMI stub RMI middleware RMI: comunicación • En Java 2 se ha suprimido el skeleton
JVM (máquina A) JVM (máquina B) objeto Naming RMI registry objeto stub RMI middleware RMI: registro de objetos • El ‘RMI Registry’ es un servidor de nombres de los objetos remotos
RMI: transporte • Una vez obtenida la referencia, el stub intenta comunicarse con el skeleton (o con el objeto que implementa el interfaz remoto): • Abriendo un socket al puerto 1080 • Enviando una petición HTTP POST al puerto 1080
RMI: serializaición, seguridad • La serialización convierte cualquier cosa en una cadena de caracteres • Los valores de retorno de los métodos pueden ser cualquier cosa • Movilidad de objetos: el retorno de un método remoto puede ser un objeto • Los objetos pueden ‘viajar’ de una JVM a otra • Seguridad: un ‘security manager’ protege el acceso a los objetos remotos.
RMI: programación • Escribir el interfaz remoto • Escribir el objeto servidor (objeto que implementa el interfaz remoto) • Escribir el cliente (objeto que usa el interfaz remoto) • Escribir el programa servidor (programa que crea y registra el objeto remoto, y arranca el ‘security manager’)
RMI: ejecución • Arranca el ‘RMI registry’ • Arranca el programa servidor: • crea el objeto remoto y lo registra • arranca el ‘security manager’ • Se crea el objeto cliente • obtiene una referencia al objeto remoto • invoca el método remoto
RMI • Herramientas • Java 2 SDK v1.4 • 5 packages • Compilador de stubrmic • Registro de objetos remotos rmiregistry http://java.sun.com/j2se/1.4/docs/guide/rmi/index.html
Bases de datos • BD: contiene los datos persistentes de la aplicación • BD relacional: • Compuesta de tablas • una tabla contiene todas las instancias de un dato • instancia de dato: fila de la tabla (registro) • los registros tienen campos (atributos del dato) • No son OO: • registro objeto • tabla clase • Cálculo relacional • Lenguaje estándar: SQL (structured query language)
BD: desarrollo • Desarrollo de una BD relacional: • Modelado de los datos • Nombre, atributos, relaciones ( objetos sin métodos) • Diseño de la BD: • Definición de las tablas • Definición de claves • Reglas de integridad referencial • Implementación de la BD: • DBMS (DB management system), estándar o propietario • DDL (data definition language)
* autor editorial libro nombre: CharString nombre CharString dirección: CharString escrito título: CharString edición: Natural fecha: Natural precio: Integer paginas: Integer ISBN: Integer * * autor_especializado * 1 clasificado * * tema * editorial_especializada nombre: CharString * 1 publicado BD: modelado • Ejemplo: BD de un sistema de gestión de una librería
BD: diseño • Clave: un campo (o tupla) cuyo valor no se repite • ISBN • nombre • nombre • nombre • (ISBN,nombre)$id • (ISBN,nombre) $id • (ISBN,nombre) $id • (nombre,nombre) $id • (nombre,nombre) $id • Tablas: una por dato + una por relación (campos=atributos) • libros • autores • editoriales • temas • escrito • clasificados • publicados • autor_especializado • editoral_especializada
escrito 54900321099 F.G.L. $286 ... ... ... libro Teoría de la... 2 2002 30 312 54900321099 autor ... ... ... ... ... ... F.G.L. ... BD: desarrollo • Clave ajena: campo que es clave en otra tabla (relaciones) • Reglas de integridad referencial: • Los valores de una clave ajena están restringidos • Eliminación/cambio de registros clave: restricción o propagación
BD: SQL • Ejemplos de consultas: • SELECT libros.titulo FROM libros WHERE (libros.paginas>200) • SELECT libros.titulo FROM (libros INNER JOIN escrito) WHERE ((libros.ISBN=escrito.ISBN) AND (escrito.nombre_autor=‘F.G.L’)) • INSERT INTO editoriales VALUES (‘edicionesX’,‘www.edicionesX.com’) • UPDATE libros SET (libros.paginas=300) WHERE (libros.ISBN=346870349) • DELET libros.titulo FROM libros WHERE (libros.paginas<100)
JDBC API • Java DataBase Connectivity • Define el acceso • de aplicaciones Java • a bases de datos relacionales locales o remotas • Desarrollado por Sun (1.2, 1997) como alternativa a ODBC (1992)