Download Introducción a la Programación Distribuida

Document related concepts
no text concepts found
Transcript
Introducción a la
Programación Distribuida
Aplicaciones Distribuidas
Contenido
Aplicaciones Empresariales
Arquitecturas Sistemas Distribuidos
Objetos Distribuidos
Middleware Orientado a Mensajes
XML
Servicios Web
J2EE
Microsoft .NET
.NET vs. J2EE
Frameworks, Patrones y UML
2
Aplicaciones Distribuidas
Aplicaciones Empresariales
Internet y Comercio Electrónico
Adopción de nuevas tecnologías y nuevos requisitos de desarrollo.
Rápidos cambios tecnológicos.
Desafíos para un informático:
Capacidad de respuesta.
Productividad.
Fiabilidad y disponibilidad.
Seguridad.
Escalabilidad.
Integración con otros sistemas.
Necesitamos una
plataforma con una rica
infraestructura que ofrezca
diferentes posibilidades
arquitectónicas
favoreciendo un entorno de
desarrollo rápido.
Interfaces de usuario.
3
Aplicaciones Distribuidas
Arquitecturas Sistemas Distribuidos
Arquitectura Cliente/Servidor (2 capas):
Base
de Datos
Aplicación
Inconvenientes:
Dificultad en
el mantenimiento.
Cliente
Mucho tráfico en la red.
Servidor
Escalabilidad limitada.
...
4
Aplicaciones Distribuidas
Arquitecturas Sistemas Distribuidos
Unidades funcionales de una aplicación:
Presentación.
Lógica de negocio.
Datos.
Arquitectura en 3-capas
Presentación
Lógica
de Negocio
5
Datos
Aplicaciones Distribuidas
Arquitecturas Sistemas Distribuidos
Arquitectura n-capas.
Ejemplo web: separar la lógica de la presentación de la interfaz de usuario.
...
Navegador
Lógica
Presentación
Lógica
Negocio
Servidor
Web
Servidor
de Aplicaciones
Datos
Arquitectura enterprise:
Evolución arquitectura n-capas.
En la capa de negocio tenemos objetos de negocio (componentes de
servidor): compartir funcionalidad.
6
Aplicaciones Distribuidas
Objetos Distribuidos
Caracterizan una arquitectura enterprise.
Motivación:
Trabajar con objetos distribuidos de un modo transparente.
Tecnologías destacadas:
CORBA:
●
Especificación independiente de lenguaje y plataforma.
●
Define servicios de infraestructura.
RMI: simple mecanismo de llamadas remotas entre objetos Java.
DCOM:
●
Mecanismo llamadas remotas a objetos COM
●
Sucesor: .NET Remoting.
Acceso a componentes de servidor: EJB, CCM, COM+
Limitación: firewalls.
7
Aplicaciones Distribuidas
Middleware Orientado a Mensajes
Motivación:
Mecanismo de comunicación entre sistemas débilmente acoplados.
Comunicación asíncrona.
Populares en los 80’s y 90’s en los sistemas IBM (MQSeries).
Integración de aplicaciones.
Basados en colas de mensajes.
Modelo de programación:
Punto a punto.
Publicación/suscripción.
Problema: evolución tecnológica.
Diferentes APIs de programación.
JMS:
API Java para acceso a servicios de mensajes.
Independencia del proveedor.
8
Aplicaciones Distribuidas
XML
Motivación:
Intercambio de datos en internet.
Requisitos:
Simple.
Independiente de la plataforma y del lenguaje de
programación
Estándar y de amplia difusión
Definición de estructuras complejas
Descripción, validación y transformaciones.
Integración con otros sistemas.
9
Aplicaciones Distribuidas
XML vs. HTML
Limitaciones de HTML:
Mezcla contenido (datos) con presentación
●
Difícil de procesar.
●
No podemos consultar su contenido.
Está predefinido, lo que limita la definición de estructuras
complejas.
No podemos describir, validar ni transformar documentos:
●
No podemos consultar su información
●
No permite distribuir la carga de procesamiento.
Solución: XML
10
Aplicaciones Distribuidas
XML (eXtensible Markup
Language)
Meta-lenguaje de etiquetas derivado de SGML.
No es una extensión de HTML.
Permite definir lenguajes de etiquetas (HTML).
Reúne los requisitos de un lenguaje de intercambio de información:
Simple: al estar basado en etiquetas y legible.
Independiente de la plataforma: codificación UNICODE.
Estándar y amplia difusión: W3C, XML está de moda.
Definición de estructuras complejas: DTD, Schemas.
Validación y transformación: DTD, XSLT.
Integración con otros sistemas.
Facilita procesamiento lado cliente.
Otras aplicaciones:
Generación de vistas: HTML, WML.
Configuración de aplicaciones.
11
Aplicaciones Distribuidas
XML - Ejemplo
Raíz
Instrucción de
Procesamiento
<?xml version=“1.0” encoding=“ISO-8859-1” ?>
<DISCO CODIGO=“B000067FSG”>
<TITULO> Estrella de Mar </TITULO>
<ARTISTA> Amaral </ARTISTA>
<ESTILO> Pop </ESTILO>
<REFERENCIA>
<EDITORA> Virgin </EDITORA>
<AÑO_EDICION> 2002 <AÑO_EDICION>
</REFERENCIA>
<MUSICOS>
Etiqueta
<MUSICO ROL=“cantante”> Amaral </MUSICO>
<MUSICO ROL=“guitarra”> Juan Aguirre </MUSICO>
</MUSICOS>
</DISCO>
Atributo
12
Aplicaciones Distribuidas
XML - DTD
Descripción de los documentos XML:
Validación.
<!ELEMENT DISCO (TITULO, ARTISTA, ESTILO?, REFERENCIA,
MUSICOS)>
<!ATTLIST DISCO CODIGO ID #REQUIERED>
<!ATTLIST DISCO TIPO=(CD | LP | DVD) “CD”>
<!ELEMENT TITULO (#PCDATA)>
...
<!ELEMENT REFERENCIA (EDITORA, AÑO_DISTRIBUCION) >
<!ELEMENT MUSICOS (MUSICO*)>
...
13
Aplicaciones Distribuidas
XML - DTD
Documento XML:
Válido: sigue la estructura de un DTD
●
Dentro del fichero XML:
–
<!DOCTYPE web-app
–
PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.2//EN"
–
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
Bien formado: sigue las reglas de generación de XML.
Limitaciones:
No es XML.
Tipado de datos muy limitado.
No soporta espacios de nombres.
14
Aplicaciones Distribuidas
XML – Familia de Estándares
Schemas:
Mismo propósito que un DTD, pero con mayor riqueza semántica.
Sintaxis basada en XML.
Contiene tipos predefinidos.
Espacios de nombres (NameSpaces).
<?xml version=“1.0”>
<xsd:schema xmlns:xsd=“http://www.w3c.org/2000/08/XMLSchema”>
<xsd:element name=“Disco” type=“DiscoTipo”>
<xsd:complexType name=“DiscoTipo”>
<xsd:attribute name=“codigo” type=“String”>
<xsd:sequence>
<xsd:element name=“Titulo” type=“String”>
<xsd:element name=“Artista” type=“String”>
<xsd:element name=“Referencia” type=“ReferenciaTipo”>
...
15
Aplicaciones Distribuidas
XML – Familia de Estándares
NameSpaces:
Espacios de nombres para cualificar elementos y atributos evitando la colisión de nombres.
xmlns:xsd=“http://www.w3c.org/2000/08/XMLSchema”
XSLT:
Definición de reglas de transformación de documentos.
XSL:
Definición de hojas de estilos.
XPath:
Para hacer referencia a partes de un documento.
/DISCO[Titulo=“Estrella de
Mar”], /DISCO//MUSICOS[1]
XLink:
Enlace documentos entre sí.
XPointer:
Enlace de secciones dentro de un documento.
XQuery:
Consultas XML.
16
Aplicaciones Distribuidas
XML - Parsers
API SAX:
Acceso secuencial al documento.
Modelo de programación basado en eventos (callbacks).
Simple y rápido: consume pocos recursos.
Sólo consulta.
API DOM:
Construye una estructura arbórea a partir del documento.
Potente, pero más costoso.
Permite actualizaciones.
Ideal para estructuras complejas.
Numerosas implementaciones de los analizadores.
API JAXP de Java.
17
Aplicaciones Distribuidas
Servicios Web
•
Motivación:
•
•
•
•
Comunicación segura entre procesos.
Necesidad de exponer la lógica de negocio a través de los firewalls de una
organización.
Uso de tecnologías estándar: HTTP, SMTP, XML
En la práctica:
•
Modo de acceso a un servicio implementado con una tecnología diferente (ej. Java 
.NET)
18
Aplicaciones Distribuidas
Servicios Web - SOAP
SOAP (Simple Access Protocol):
“Intercambio de datos en un entorno distribuido usando
XML”.
Puede usarse para llamadas remotas (RPC).
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding”>
<SOAP-ENV:Header>
<h:transaccion xmlns:h="http://www.misEjemplos.com/cabeceras">
43
</h:transaccion>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:validarPedido xmlns:m="http://www.misEjemplos.com/pedidos">
<m:id>EF453</m:id>
</m:validarPedido>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
19
Aplicaciones Distribuidas
Servicios Web - WSDL
Documento XML para describir
servicios web.
Operaciones que soporta.
Modo de acceso:
Protocolo de transporte: SOAP, HTTP,
SMTP.
Representación de datos.
Localización.
Generada a partir de las
implementaciones.
20
Aplicaciones Distribuidas
WSDL - Ejemplo
<message name='obtenerHoteles'>
<part name='Ciudad' type='xsd:string'/>
</message>
<message name='obtenerHotelesResponse'>
<part name='Result' type='typens:ArrayOfHotel'/>
</message>
<portType name='ServicioHotelPortType'>
<operation name='obtenerHoteles'>
<input message='wsdlns:obtenerHoteles' />
<output message='wsdlns:obtenerHotelesResponse' />
</operation>
</portType>
21
Aplicaciones Distribuidas
WSDL - Ejemplo
<binding name='ServicioHotelSoapBinding' type='wsdlns:ServicioHotelPortType' >
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http' />
<operation name='obtenerHoteles' >
<soap:operation
soapAction='http://tempuri.org/action/ServicioHotel.obtenerHoteles' />
<input>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<port name='ServicioHotelSoapPort' binding='wsdlns:ServicioHotelSoapBinding' >
<soap:address location='http://dis.um.es/hoteles/ServletServicio' />
</port>
22
Aplicaciones Distribuidas
Servicios Web - UDDI
UDDI:
Descripción, registro y descubrimiento de Servicios Web.
Páginas blancas, páginas amarillas y páginas verdes.
Registro Global: Microsoft e IBM.
23
Aplicaciones Distribuidas
Servicios Web - Conclusiones
Resuelve de un modo superficial la comunicación segura entre
procesos.
No abarca todos los requisitos programación distribuida
(CORBA).
Limitaciones:
Los servicios web no tienen estado.
No existe un modelo global de seguridad.
No disponemos de transacciones.
...
Con la aparición de .NET es una tecnología muy utilizada para la
integración tecnológica.
24
Aplicaciones Distribuidas
J2EE: Java 2 Enterprise Edition
J2SE:
25
Aplicaciones Distribuidas
J2EE
J2EE:
“Añade las capacidades necesarias a J2SE para proporcionar una
plataforma Java completa, estable, segura y rápida para el
desarrollo de aplicaciones enterprise”.
“Conjunto de especificaciones y prácticas que juntas favorecen
el desarrollo, despliegue y gestión de aplicaciones n-capas
orientadas al servidor”
Desarrollo en capas basado en la idea de contenedor.
Cualquier fabricante puede implementar las especificaciones.
Simplifica la conectividad.
26
Aplicaciones Distribuidas
J2EE
Especificaciones:
Extensión de JDBC (acceso a BD).
RMI sobre IIOP:
●
Integración CORBA
●
Modelo de componentes de servidor para aplicaciones distribuidas.
EJB:
Java Servlets/JSP:
●
Framework para construir aplicaciones web dinámicas.
●
Integración con los middleware orientados a mensajes
JMS:
Java Mail:
●
Framework para desarrollar aplicaciones de correo
Java Transaction API:
●
Transacciones distribuidas.
…
Prácticas:
http://www.oracle.com/technetwork/java/javaee/blueprint
http://java.sun.com/blueprints/patterns/
27
Aplicaciones Distribuidas
Microsoft .NET
•
Desarrollo en Windows anterior a .NET:
•
•
•
•
•
•
•
•
•
Modelos de componentes: COM, OLE y ActiveX.
Interfaces de usuario: Microsoft Foundation Classes.
Aplicaciones web con contenido dinámico: ASP.
Acceso a datos y directorios: OLE DB y ODBC  ADO.
XML: API MSXML.
Componentes distribuidos: DCOM
Mensajes asíncronos: MSMQ
Servidor de aplicaciones: Microsoft Transaction Server.
Componentes de Servidor: COM+
28
Aplicaciones Distribuidas
Microsoft .NET – Arquitectura
DNA
•
Arquitectura DNA (Distributed InteNet Applications Architecture):
•
Framework Microsoft .NET.
29
Aplicaciones Distribuidas
Microsoft .NET - Aportaciones
Nuevo modelo de ejecución:
Common Language Runtime (CLR).
Máquina virtual que ejecuta código intermedio (MSIL).
Orientado a Objetos, garbage collection, nuevo modelo
de delegación de eventos, seguridad, ...
Independiente del lenguaje de programación:
●
CLI: sistema común de tipos
●
C#, VB.NET. Managed C++, Eiffel.NET, ...
Nuevo modelo de componentes:
Ensamblados.
Reemplazan a COM.
30
Aplicaciones Distribuidas
Microsoft .NET - Aportaciones
Programación de interfaces gráficas:
WinForms.
Programación de interfaces web:
ASP.NET, WebForms.
Ejecutan código MSIL.
Acceso a datos:
ADO.NET
Transmisión de datos en XML.
Librerías para acceso a servicios de directorio.
Framework acceso remoto (.NET Remoting):
Sustituye a DCOM
XML y Servicios Web integrados en la plataforma.
Dominios de aplicación, programación orientada a aspectos (atributos), ...
31
Aplicaciones Distribuidas
Microsoft .NET - Conclusiones
Es un producto (framework) y no una especificación.
En teoría, .NET no está ligado a las plataformas
Windows.
CLR y el sistema de tipos estandarizados.
Desarrollo centrado en una sola herramienta: Visual
Studio .NET, ...
Deja fuera el servidor de aplicaciones:
Acceso a COM+ como código no manejado.
En la práctica, .NET sigue ligado a Windows.
32
Aplicaciones Distribuidas
Microsoft .NET vs. J2EE
.NET
J2EE
Propiedad
Microsoft
Sun y JCP-Partners
Estado
Producto
Especificaciones y muchas
implementaciones.
Lenguajes
C#, VB.NET, C++,
Eiffel.NET, ...
Java
Comunicación
.NET Remoting, MSMQ y
Servicios Web
RMI/CORBA, JMS y
Servicios Web
Componentes de
Servidor
COM+
Enterprise JavaBeans
Soporte XML
Integrado
No completamente
integrado
33
Aplicaciones Distribuidas
Microsoft .NET vs. J2EE
.NET
J2EE
Páginas de Servidor
ASP.NET/Web.Forms
Servlet/JSP/JSF
Acceso a Datos
ADO.NET, librerías
JDBC, JNDI, JPA
Librería base
Extensa System.*
Extensa java.*
Interfaces
Windows.Forms
Web.Forms
Swing/AWT
Sistema Ejecución
CLR
JVM
Interoperabilidad
PInvoke
JNI
Inter. Middleware
COM/COM+
CORBA, JMS
Integración Heredado
Host Integration Server
JCA
34
Aplicaciones Distribuidas
Frameworks, UML y Patrones
Rápida evolución tecnologías software (Aprovechar la experiencia: J2EE Blueprints.)
Reutilización: Patrones y Frameworks
Diseño J2EE y .NET
Patrones:
●
“Design Patterns”, Gamma et al.
●
“Pattern – Oriented Software Architecture” (POSA): Buschmann et al.
●
“Pattern – Oriented Software Architecture 2: Patterns for Concurrent and Network Objets” (POSA2), D. Schmidt et
al.
Frameworks:
●
●
●
“Building Application Frameworks: Object-Oriented Foundations of Framework Design”, M. E. Fayad, D.
Schmidt, R. Johnson.
“Implementing Application Frameworks: object-oriented frameworks at work”, M. E. Fayad, D. Schmidt, R.
Johnson
“Domain-Specific Application Frameworks: Frameworks experience by industry”. M. E. Fayad, R. Johnson
Modelado de aplicaciones web con UML:
●
“Building Web Applications with UML”, J. Conallen.
35
Aplicaciones Distribuidas