Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ......

35
Introducción a la Programación Distribuida Aplicaciones Distribuidas

Transcript of Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ......

Page 1: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Introducción a la Programación Distribuida

Aplicaciones Distribuidas

Page 2: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Contenido

Aplicaciones EmpresarialesArquitecturas Sistemas DistribuidosObjetos DistribuidosMiddleware Orientado a MensajesXMLServicios WebJ2EEMicrosoft .NET.NET vs. J2EEFrameworks, Patrones y UML

Aplicaciones Distribuidas 2

Page 3: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Interfaces de usuario.

Aplicaciones Distribuidas 3

Necesitamos una plataforma con una rica infraestructura que ofrezca diferentes posibilidades arquitectónicas favoreciendo un entorno de desarrollo rápido.

Page 4: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Arquitecturas Sistemas Distribuidos

Arquitectura Cliente/Servidor (2 capas):

Inconvenientes:

Dificultad en el mantenimiento.

Mucho tráfico en la red.

Escalabilidad limitada.

...

Aplicaciones Distribuidas 4

Aplicación Base de Datos

Cliente Servidor

Page 5: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Arquitecturas Sistemas Distribuidos

Unidades funcionales de una aplicación:

Presentación.

Lógica de negocio.

Datos.

Arquitectura en 3-capas

Aplicaciones Distribuidas 5

PresentaciónLógica

de Negocio Datos

Page 6: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Arquitecturas Sistemas Distribuidos

Arquitectura n-capas.Ejemplo web: separar la lógica de la presentación de la interfaz de usuario.

Arquitectura enterprise:Evolución arquitectura n-capas.

En la capa de negocio tenemos objetos de negocio (componentes de servidor): compartir funcionalidad.

Aplicaciones Distribuidas 6

Lógica Presentación

Servidor Web

LógicaNegocio

Navegador Datos

Servidor de Aplicaciones

...

Page 7: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 7

Page 8: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 8

Page 9: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 9

Page 10: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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

Aplicaciones Distribuidas 10

Page 11: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 11

Page 12: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

XML - Ejemplo

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

<MUSICO ROL=“cantante”> Amaral </MUSICO>

<MUSICO ROL=“guitarra”> Juan Aguirre </MUSICO>

</MUSICOS>

</DISCO>

Aplicaciones Distribuidas 12

Instrucción de Procesamiento

Etiqueta

Atributo

Raíz

Page 13: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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*)>...

Aplicaciones Distribuidas 13

Page 14: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 14

Page 15: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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

...

Aplicaciones Distribuidas 15

Page 16: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 16

Page 17: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 17

Page 18: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Servicios Web

Aplicaciones Distribuidas 18

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

Page 19: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Servicios Web - SOAP

SOAP (Simple Access Protocol):“Intercambio de datos en un entorno distribuido usando XML”.

Puede usarse para llamadas remotas (RPC).

Aplicaciones Distribuidas 19

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

Page 20: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Servicios Web - WSDLDocumento 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.

Aplicaciones Distribuidas 20

Page 21: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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>

Aplicaciones Distribuidas 21

Page 22: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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>

Aplicaciones Distribuidas 22

Page 23: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 23

Page 24: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 24

Page 25: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

J2EE: Java 2 Enterprise Edition

J2SE:

Aplicaciones Distribuidas 25

Page 26: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 26

Page 27: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

J2EE

Especificaciones:Extensión de JDBC (acceso a BD).

RMI sobre IIOP:

● Integración CORBA

EJB:

● Modelo de componentes de servidor para aplicaciones distribuidas.

Java Servlets/JSP:

● Framework para construir aplicaciones web dinámicas.

JMS:

● Integración con los middleware orientados a mensajes

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/

Aplicaciones Distribuidas 27

Page 28: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Microsoft .NET

Aplicaciones Distribuidas 28

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

Page 29: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Microsoft .NET – Arquitectura DNA

Aplicaciones Distribuidas 29

• Arquitectura DNA (Distributed InteNet Applications Architecture):

• Framework Microsoft .NET.

Page 30: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 30

Page 31: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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 DCOMXML y Servicios Web integrados en la plataforma.Dominios de aplicación, programación orientada a aspectos (atributos), ...

Aplicaciones Distribuidas 31

Page 32: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

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.

Aplicaciones Distribuidas 32

Page 33: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Microsoft .NET vs. J2EE

Aplicaciones Distribuidas 33

.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

Page 34: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Microsoft .NET vs. J2EE

Aplicaciones Distribuidas 34

.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.FormsWeb.Forms

Swing/AWT

Sistema Ejecución CLR JVM

Interoperabilidad PInvoke JNI

Inter. Middleware COM/COM+ CORBA, JMS

Integración Heredado Host Integration Server JCA

Page 35: Introducción a la Programación Distribuida Aplicaciones ... .NET.NET vs. J2EE Frameworks, ... despliegue y gestión de aplicaciones n-capas ... sistema común de tipos C#, VB.NET.

Frameworks, UML y Patrones

Rápida evolución tecnologías software (Aprovechar la experiencia: J2EE Blueprints.)

Reutilización: Patrones y FrameworksDiseñ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.

Aplicaciones Distribuidas 35