Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T1 - Introduccion
T1 - Introduccion
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
Base
de Datos
Aplicacin
Inconvenientes:
Dificultad en
el mantenimiento.
Cliente
Mucho trfico en la red.
Servidor
Escalabilidad limitada.
...
Aplicaciones Distribuidas
Presentacin.
Lgica de negocio.
Datos.
Arquitectura en 3-capas
Presentacin
Lgica
de Negocio
5
Datos
Aplicaciones Distribuidas
...
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:
Tecnologas destacadas:
CORBA:
Aplicaciones Distribuidas
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.
JMS:
Aplicaciones Distribuidas
XML
Motivacin:
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
Difcil de procesar.
Solucin: XML
10
Aplicaciones Distribuidas
Aplicaciones Distribuidas
XML - Ejemplo
Raz
Instruccin de
Procesamiento
Etiqueta
</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:
<!DOCTYPE web-app
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
No es XML.
Tipado de datos muy limitado.
No soporta espacios de nombres.
14
Aplicaciones Distribuidas
<?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
XSLT:
XSL:
XPath:
Mar], /DISCO//MUSICOS[1]
XLink:
XPointer:
XQuery:
Consultas XML.
16
Aplicaciones Distribuidas
XML - Parsers
API SAX:
API DOM:
Aplicaciones Distribuidas
Servicios Web
Motivacin:
En la prctica:
Modo de acceso a un servicio implementado con una tecnologa diferente (ej. Java
.NET)
18
Aplicaciones Distribuidas
Aplicaciones Distribuidas
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
23
Aplicaciones Distribuidas
Aplicaciones Distribuidas
25
Aplicaciones Distribuidas
J2EE
J2EE:
26
Aplicaciones Distribuidas
J2EE
Especificaciones:
Integracin CORBA
EJB:
Java Servlets/JSP:
JMS:
Java Mail:
Transacciones distribuidas.
Prcticas:
http://www.oracle.com/technetwork/java/javaee/blueprint
http://java.sun.com/blueprints/patterns/
27
Aplicaciones Distribuidas
Microsoft .NET
28
Aplicaciones Distribuidas
29
Aplicaciones Distribuidas
Ensamblados.
Reemplazan a COM.
30
Aplicaciones Distribuidas
WinForms.
ASP.NET, WebForms.
ADO.NET
Sustituye a DCOM
Aplicaciones Distribuidas
32
Aplicaciones Distribuidas
J2EE
Propiedad
Microsoft
Sun y JCP-Partners
Estado
Producto
Especificaciones y muchas
implementaciones.
Lenguajes
Java
Comunicacin
RMI/CORBA, JMS y
Servicios Web
Componentes de
Servidor
COM+
Enterprise JavaBeans
Soporte XML
Integrado
No completamente
integrado
33
Aplicaciones Distribuidas
J2EE
Pginas de Servidor
ASP.NET/Web.Forms
Servlet/JSP/JSF
Acceso a Datos
ADO.NET, libreras
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
JCA
34
Aplicaciones Distribuidas
Pattern Oriented Software Architecture 2: Patterns for Concurrent and Network Objets (POSA2), D. Schmidt et
al.
Frameworks:
35
Aplicaciones Distribuidas