Está en la página 1de 35

Introduccin a la

Programacin 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

Aplicaciones Distribuidas

Aplicaciones Empresariales
Internet y Comercio Electrnico
Adopcin de nuevas tecnologas y nuevos requisitos de desarrollo.
Rpidos cambios tecnolgicos.
Desafos para un informtico:

Capacidad de respuesta.
Productividad.

Fiabilidad y disponibilidad.
Seguridad.
Escalabilidad.
Integracin con otros sistemas.

Necesitamos una
plataforma con una rica
infraestructura que ofrezca
diferentes posibilidades
arquitectnicas
favoreciendo un entorno de
desarrollo rpido.

Interfaces de usuario.

Aplicaciones Distribuidas

Arquitecturas Sistemas Distribuidos


Arquitectura Cliente/Servidor (2 capas):

Base
de Datos

Aplicacin
Inconvenientes:

Dificultad en
el mantenimiento.
Cliente
Mucho trfico en la red.

Servidor

Escalabilidad limitada.
...

Aplicaciones Distribuidas

Arquitecturas Sistemas Distribuidos


Unidades funcionales de una aplicacin:

Presentacin.
Lgica de negocio.
Datos.
Arquitectura en 3-capas

Presentacin

Lgica
de Negocio
5

Datos
Aplicaciones Distribuidas

Arquitecturas Sistemas Distribuidos


Arquitectura n-capas.
Ejemplo web: separar la lgica de la presentacin de la interfaz de usuario.

...

Navegador

Lgica
Presentacin

Lgica
Negocio

Servidor
Web

Servidor
de Aplicaciones

Datos

Arquitectura enterprise:
Evolucin 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.
Motivacin:

Trabajar con objetos distribuidos de un modo transparente.

Tecnologas destacadas:
CORBA:

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


Limitacin: firewalls.
7

Aplicaciones Distribuidas

Middleware Orientado a Mensajes


Motivacin:

Mecanismo de comunicacin entre sistemas dbilmente acoplados.

Comunicacin asncrona.
Populares en los 80s y 90s en los sistemas IBM (MQSeries).
Integracin de aplicaciones.
Basados en colas de mensajes.
Modelo de programacin:
Punto a punto.

Publicacin/suscripcin.

Problema: evolucin tecnolgica.

Diferentes APIs de programacin.

JMS:

API Java para acceso a servicios de mensajes.


Independencia del proveedor.

Aplicaciones Distribuidas

XML
Motivacin:

Intercambio de datos en internet.


Requisitos:

Simple.
Independiente de la plataforma y del lenguaje de
programacin
Estndar y de amplia difusin
Definicin de estructuras complejas
Descripcin, validacin y transformaciones.
Integracin con otros sistemas.
9

Aplicaciones Distribuidas

XML vs. HTML


Limitaciones de HTML:

Mezcla contenido (datos) con presentacin

Difcil de procesar.

No podemos consultar su contenido.

Est predefinido, lo que limita la definicin de estructuras


complejas.
No podemos describir, validar ni transformar documentos:

No podemos consultar su informacin

No permite distribuir la carga de procesamiento.

Solucin: XML

10

Aplicaciones Distribuidas

XML (eXtensible Markup


Language)
Meta-lenguaje de etiquetas derivado de SGML.
No es una extensin de HTML.

Permite definir lenguajes de etiquetas (HTML).

Rene los requisitos de un lenguaje de intercambio de informacin:


Simple: al estar basado en etiquetas y legible.

Independiente de la plataforma: codificacin UNICODE.


Estndar y amplia difusin: W3C, XML est de moda.
Definicin de estructuras complejas: DTD, Schemas.
Validacin y transformacin: DTD, XSLT.
Integracin con otros sistemas.

Facilita procesamiento lado cliente.


Otras aplicaciones:
Generacin de vistas: HTML, WML.
Configuracin de aplicaciones.
11

Aplicaciones Distribuidas

XML - Ejemplo
Raz
Instruccin 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>
<AO_EDICION> 2002 <AO_EDICION>
</REFERENCIA>
<MUSICOS>

Etiqueta

<MUSICO ROL=cantante> Amaral </MUSICO>


<MUSICO ROL=guitarra> Juan Aguirre </MUSICO>
</MUSICOS>

</DISCO>

Atributo
12

Aplicaciones Distribuidas

XML - DTD
Descripcin de los documentos XML:
Validacin.
<!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, AO_DISTRIBUCION) >
<!ELEMENT MUSICOS (MUSICO*)>
...

13

Aplicaciones Distribuidas

XML - DTD
Documento XML:

Vlido: 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 generacin de XML.


Limitaciones:

No es XML.
Tipado de datos muy limitado.
No soporta espacios de nombres.
14

Aplicaciones Distribuidas

XML Familia de Estndares


Schemas:

Mismo propsito que un DTD, pero con mayor riqueza semntica.


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 Estndares


NameSpaces:

Espacios de nombres para cualificar elementos y atributos evitando la colisin de nombres.


xmlns:xsd=http://www.w3c.org/2000/08/XMLSchema

XSLT:

Definicin de reglas de transformacin de documentos.

XSL:

Definicin 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 programacin basado en eventos (callbacks).
Simple y rpido: consume pocos recursos.
Slo consulta.

API DOM:

Construye una estructura arbrea a partir del documento.


Potente, pero ms costoso.
Permite actualizaciones.
Ideal para estructuras complejas.

Numerosas implementaciones de los analizadores.


API JAXP de Java.
17

Aplicaciones Distribuidas

Servicios Web

Motivacin:

Comunicacin segura entre procesos.


Necesidad de exponer la lgica de negocio a travs de los firewalls de una
organizacin.
Uso de tecnologas estndar: HTTP, SMTP, XML

En la prctica:

Modo de acceso a un servicio implementado con una tecnologa 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.
Representacin de datos.

Localizacin.
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:

Descripcin, registro y descubrimiento de Servicios Web.


Pginas blancas, pginas amarillas y pginas verdes.
Registro Global: Microsoft e IBM.

23

Aplicaciones Distribuidas

Servicios Web - Conclusiones


Resuelve de un modo superficial la comunicacin segura entre
procesos.
No abarca todos los requisitos programacin distribuida
(CORBA).
Limitaciones:
Los servicios web no tienen estado.
No existe un modelo global de seguridad.
No disponemos de transacciones.
...
Con la aparicin de .NET es una tecnologa muy utilizada para la
integracin tecnolgica.
24

Aplicaciones Distribuidas

J2EE: Java 2 Enterprise Edition


J2SE:

25

Aplicaciones Distribuidas

J2EE
J2EE:

Aade las capacidades necesarias a J2SE para proporcionar una


plataforma Java completa, estable, segura y rpida para el
desarrollo de aplicaciones enterprise.
Conjunto de especificaciones y prcticas que juntas favorecen
el desarrollo, despliegue y gestin 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:

Extensin de JDBC (acceso a BD).


RMI sobre IIOP:

Integracin CORBA

Modelo de componentes de servidor para aplicaciones distribuidas.

EJB:
Java Servlets/JSP:

Framework para construir aplicaciones web dinmicas.

Integracin con los middleware orientados a mensajes

JMS:
Java Mail:

Framework para desarrollar aplicaciones de correo

Java Transaction API:

Transacciones distribuidas.

Prcticas:

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 dinmico: ASP.
Acceso a datos y directorios: OLE DB y ODBC ADO.
XML: API MSXML.
Componentes distribuidos: DCOM
Mensajes asncronos: 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 ejecucin:

Common Language Runtime (CLR).


Mquina virtual que ejecuta cdigo intermedio (MSIL).
Orientado a Objetos, garbage collection, nuevo modelo
de delegacin de eventos, seguridad, ...
Independiente del lenguaje de programacin:

CLI: sistema comn de tipos

C#, VB.NET. Managed C++, Eiffel.NET, ...

Nuevo modelo de componentes:

Ensamblados.

Reemplazan a COM.
30

Aplicaciones Distribuidas

Microsoft .NET - Aportaciones


Programacin de interfaces grficas:

WinForms.

Programacin de interfaces web:

ASP.NET, WebForms.

Ejecutan cdigo MSIL.


Acceso a datos:

ADO.NET

Transmisin de datos en XML.


Libreras para acceso a servicios de directorio.
Framework acceso remoto (.NET Remoting):

Sustituye a DCOM

XML y Servicios Web integrados en la plataforma.


Dominios de aplicacin, programacin orientada a aspectos (atributos), ...
31

Aplicaciones Distribuidas

Microsoft .NET - Conclusiones


Es un producto (framework) y no una especificacin.
En teora, .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 cdigo no manejado.
En la prctica, .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

Comunicacin

.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

Pginas de Servidor

ASP.NET/Web.Forms

Servlet/JSP/JSF

Acceso a Datos

ADO.NET, libreras

JDBC, JNDI, JPA

Librera base

Extensa System.*

Extensa java.*

Interfaces

Windows.Forms
Web.Forms

Swing/AWT

Sistema Ejecucin

CLR

JVM

Interoperabilidad

PInvoke

JNI

Inter. Middleware

COM/COM+

CORBA, JMS

Integracin Heredado

Host Integration Server

JCA

34

Aplicaciones Distribuidas

Frameworks, UML y Patrones


Rpida evolucin tecnologas software (Aprovechar la experiencia: J2EE Blueprints.)
Reutilizacin: Patrones y Frameworks
Diseo 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

También podría gustarte