Title: febrero 2003
1Forum de Desarrolladores Corporativos SERVICIOS
WEB XML EN .NETY cómo cambian la manera de
diseñar aplicaciones
Patrocinado por
2Servicios Web XMLy como cambian la manera de
diseñar aplicacionesCatherine HellerSenior
ConsultantMicrosoft Developer Services
3Conocimientos previos
- Conocimientos básicos de
- .NET Framework
- Servicios Web
- SOAP
- Aplicaciones distribuidas
4Ideas clave...
- Servicios Web fachada (o façade)
- Servicios Web débilmente acoplados
- 3. Servicios Web en plena ebullición
- Hoy punto-a-punto
- Mañana extremo-a-extremo
- Y si no estás haciendo Servicios Web,
- empezad ya! ?
pueden ser débilmente acoplados
5Agenda
- Servicios Web XML y su contexto
- Diseño de Servicios Web XML
- Consumo de Servicios Web XML
- GXA y WSE
6Agenda
- Servicios Web XML y su contexto
- Repaso de Servicios Web XML
- Arquitectura orientada a Servicios
- Escenarios de uso
- Diseño de Servicios Web XML
- Consumo de Servicios Web XML
- GXA y WSE
7Servicio Web XML
- Lógica de aplicación
- Consumidores programas, no usuarios
- Protocolos estándar
- XML, SOAP, WSDL, (UDDI)
- Basado en mensajes
- Interoperabilidad entre sistemas heterogéneos
8Servicios Web XMLLa pila básica de protocolos
Publicar, buscar servicios UDDI
Descripción de servicios WSDL
Interacción de servicios SOAP
Formato de datos universal XML
Comunicaciones ubicuas Internet
9Estándares Situación actual(febrero 2003)
- XML
- XML 1.0 W3C Recommendation
- XML Schema 1.0 W3C Recommendation
- SOAP
- SOAP 1.1 W3C Note
- SOAP 1.2 W3C Candidate Recommendation
- WSDL
- WSDL 1.1 W3C Note
- WSDL 1.2 W3C Working Draft
- UDDI
- UDDI v2, v3 OASIS Committee Specification
10Service-Oriented Architecture(SOA)
- Aspectos de una SOA...
- Distintas organizaciones/departamentos
- Redes, a veces poco fiables
- Separación por distintos firewalls
11Vista interna de un Servicio (1)
Mensaje
Servicio
Lógica
Estado
PolÃticas
12Vista interna de un Servicio (2)
Service Façade
Mensaje
Lógica de negocio
Acceso a datos
Datos
Servicio
13CaracterÃsticas de un Servicio
- Basado en mensajes
- Datos
- Invocados de forma remota
- Viaje i/v deberÃa amortizarse
- Interfaces de grano grueso (course-grained)
- Representan dominios de negocio, no entidades
- Débilmente acoplado (loosely-coupled)
14Loosely Coupled - Qué significa?
- Acoplamiento (coupling)...
- Grado de dependencia entre elementos
- Entre fuerte ? débil
- Y siempre con respecto a algún aspecto de la
relación entre elementos - Cuanto menor acoplamiento, mayor coste
- Tiempo de desarrollo, rendimiento, complejidad
15Tipos de dependencias (1)
- Dependencias en tiempo de desarrollo
- Qué necesito para compilar
- Cuándo tengo que recompilar
- Dependencias en tiempo de despliegue
- Qué necesito desplegar
- Cuándo necesito re-distribuir
16Tipos de dependencias (2)
- Dependencias en tiempo de ejecución
- Cuándo se ejecuta (asÃncrono vs. sÃncrono)
- Cómo se ejecuta (dependencia del modelo de
programación, middleware, etc) - Dónde se ejecuta (transparencia de ubicación)
17Servicios Web XML -Escenarios de uso
- Entre organizaciones (Extranet)
- B2B
- Web Component Libraries/Internet
- Entre sistemas (Intranet)
- EAI
- Entre capas de una aplicación distribuida
- Cliente Windows Forms
- Cliente .NET Compact Framework
- Fachada de componentes de negocio
- Peer-to-Peer
18Agenda
- Servicios Web XML y su contexto
- Diseño de Servicios Web XML
- Consumo de Servicios Web XML
- GXA y WSE
- Servicios Web XML y su contexto
- Diseño de Servicios Web XML
- Fachadas
- Estilos de interfaces y extensibilidad
- Interoperabilidad
- SÃncrono vs. asÃncrono
- Tipos de datos problemáticos
- Servicios Web y .NET Remoting
- Consumo de Servicios Web XML
- GXA y WSE
19Patrón Facade (GOF)
unified interface to a set of interfaces
- Provide a unified interface to a set of
interfaces. Facade defines a higher-level
interface that makes the subsystem easier
to use. - Proporcionar una interfaz unificada a un
conjunto de interfaces. Facade define una
interfaz de mas alto nivel que facilita el uso de
un subsistema - Design Patterns. Elements of Reusable
Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson, John
Vlissides - Addison-Wesley 1995
makes the subsystem easier to use
20Por qué utilizar fachadas
- Independizar (desacoplar) el cliente
- Reducir dependencias en tiempo de desarrollo y/o
despliegue - Facilitar la implementación de los clientes
21Servicios Web como fachadas
- No implementar lógica en .asmx
- Desviar llamadas a los componentes de negocio
- Diseñar pensando en el tipo de cliente
22Estilos de interfaces
- RPC-centric
- int Add(int X, int Y)
- Alta granularidad de parámetros
- Fuertemente tipado
- (Raw) XML-centric
- string Add(string Args)
- XmlNode Add(XmlElement Args)
- Entrada/salida basada en XML
- No tipado (similar a Variant/IDispatch)
- Document-centric
- AddResponse Add(AddRequest Args)
- Entrada/salida basada en tipos estructurados
- Fuertemente tipado
xsdstring
xsdany
23Extensibilidad
- Cambios comunes en una interfaz
- Nuevos elementos
- Servicio Web, método, parámetro
- Modificación de elementos
- Cambio de tipo de parámetro y/o valor de
retorno - Eliminación de elementos
- Servicio Web, método, parámetro
24ExtensibilidadLecciones aprendidas... (1)
- Parámetros no recibidos son inicializados con su
valor por defecto - Reference type null
- Numérico 0
- Boolean false
- Parámetros no esperados son ignorados
- void Method(int P1, string P2,
- XmlAnyNode XmlNode ExtraParams)
25ExtensibilidadLecciones aprendidas... (2)
- xxxSpecified
- Controla la serialización/deserialización de un
campo/propiedad - Campo de tipo bool que se asocia a un campo xxx
- Permite que un value type sea opcional (minOccurs
0)
26ExtensibilidadLecciones aprendidas... (3)
- Parámetros de entrada/salida (valor de retorno)
- Tipos estructurados (clases)
- Para poder recibir múltiples tipos
- XmlElement(typeof(...))
- Para poder devolver múltiples tipos
- return XmlElement(typeof(...))
- Operaciones
- Métodos virtuales (jerarquÃa de clases
petición/respuesta)
27Interoperabilidad Posibles incompatibilidades (1)
- WSDL
- 307324 HOW TO Integrate a .NET Client with an
Apache SOAP 2.2 XML Web Service - http//support.microsoft.com/default.aspx?scidk
b3Ben-us3B307324 - 307318 HOW TO Integrate a SOAP Toolkit Client
with an Apache SOAP 2.2 XML Web Service - http//support.microsoft.com/default.aspx?scidkb
3Ben-us3B307318 - 307279 HOW TO Integrate an Apache SOAP 2.2
Client with a SOAP Toolkit XML Web Service - http//support.microsoft.com/default.aspx?scidkb
3Ben-us3B307279 - 308438 HOW TO Integrate a PERL/SOAP Lite Client
with a SOAP Toolkit or .NET XML Web Service - http//support.microsoft.com/default.aspx?scidkb
3Ben-us3B308438 - 308466 HOW TO Integrate an Apache SOAP 2.2
Client with a .NET XML Web Service - http//support.microsoft.com/default.aspx?scidkb
3Ben-us3B308466
28Interoperabilidad Posibles incompatibilidades (2)
- Estilo de mensaje (Document vs. Rpc)
- ASP.NET utiliza estilo Document por defecto
- Especificación explÃcita...
- SoapDocumentServiceAttribute / SoapRpcServiceAttri
bute - SoapDocumentMethodAttribute / SoapRpcMethodAttribu
te - Representación de parámetros (Literal vs.
Encoded) - ASP.NET utiliza Literal por defecto
- Especificación explÃcita
- SoapDocumentService(UseSoapBindingUse.Encoded)
- SoapDocumentMethod(UseSoapBindingUse.Encoded)
29Interoperabilidad Posibles incompatibilidades (3)
- Algunos tipos de datos
- Por ejemplo, DataSet
- Protocol bindings (Http-Get, Http-Post)
-
ltsystem.webgt ltwebServicesgt ltprotocolsgt
ltadd name"HttpSoap"/gt
ltremove name"HttpPost"/gt ltremove
name"HttpGet"/gt ltadd
name"Documentation"/gt lt/protocolsgt
lt/webServicesgt ltsystem.webgt
30Interoperabilidad - Recursos
- Web Services Interoperability Organization
- http//www.ws-i.org
- SoapBuilders Interoperability Lab
- Round 1 http//www.xmethods.net/ilab
- Round 2 http//www.whitemesa.com/interop.htm
- Interop Results for ASP.NET
- http//mssoapinterop.org/results/resaspx.xml
31SÃncrono vs. asÃncrono
- SÃncrono
- Se espera durante toda la ejecución
- Se obtiene la respuesta al finalizar la ejecución
- AsÃncrono
- Solo se inicia la ejecución
- Se obtiene la respuesta en otro momento, mediante
algún mecanismo de notificación y/o solicitud
Con respecto a qué...?
32SÃncrono vs. asÃncrono
- Con respecto a...
- Thread
- Comunicaciones
- Proceso
- Usuario/cliente
33SÃncrono vs. asÃncrono
Con respecto a thread
Cliente
Servidor
Aplicación
Servicio Web
UI
Method
1
2
34SÃncrono vs. asÃncrono
Con respecto a thread
Cliente
Servidor
Aplicación
Servicio Web
UI
Method
1
2
AsÃncrono
1
SÃncrono
2
35SÃncrono vs. asÃncrono
Con respecto a thread
Cliente
Servidor
Aplicación
Servicio Web
UI
BeginMethod
1
EndMethod
2
SÃncrono
1
AsÃncrono
2
36Métodos Web asÃncronos
- Pareja de métodos BeginXXX/EndXXX
WebMethod public string Method(int Param) ...
WebMethod public IAsyncResult
BeginMethod(int Param, AsyncCallback cb,
object o) ... WebMethod public string
EndMethod(IAsyncResult cb) ...
- Server-Side Asynchronous Web Methods
- http//msdn.microsoft.com/library/en-us/dnservice
/html/service10012002.asp
37Procesos de larga duración
- Procesos interactivos
- Larga duración gt 8-10 segundos
- Evitar al menos la congelación del UI
- Procesos semi-interactivos
- Se da por hecho la disponibilidad del
destinatario - Larga duración gt 30 segundos
- Procesos desatendidos
- Larga duración horas, dÃas, semanas
- Se necesita infraestructura adicional (como MSMQ,
BizTalk, etc.)
38Tipos de datos (1)
- Tipos no serializables por el XmlSerializer
- Clases que implementan IDictionary (como
Hashtable) - Clases sin constructor por defecto
- Propiedades de tipo interfaz
- System.Data.SqlTypes, IntPtr
- Propiedades decoradas con atributos de seguridad
declarativas
39Tipos de datos (2)
- DataSet
- No es interoperable
- ArrayList
- Utilizar atributos para tipar
- Array de clases
- Problemas con data binding
- DateTime
- Formato fijo yyyy-MM-ddTHHmmss.fffffffzzzzzz
- TimeSpan
- Exponer como string
40Servicios WebASMX o Remoting?
- No utilizar Remoting para implementar Servicios
Web - Basado en el sistema de tipos del CLR
- No entiende XSD (como un sistema de tipos)
- No puede utilizar Session State
- Modelo de activación inapropiado
- Permite pasar objetos por referencia
- No contemplado en toolkits (WSE)
41Agenda
- Repaso de Servicios Web XML y GXA
- Diseñando Servicios Web XML
- Consumo de Servicios Web XML
- Web Services Enhancements (WSE)
42Clientes de un Servicio Web
- Aplicación rica (Smart Client)
- Windows Forms
- .NET Compact Framework
- Office (Web Service Toolkit)
- Aplicación Web
- Sistema externo
43Agenda
- Servicios Web XML y su contexto
- Diseño de Servicios Web XML
- Consumo de Servicios Web XML
- GXA y WSE
44Dónde estamos?
- SOAP WSDL
- Aplicaciones básicas, y punto-a-punto
- Facilidades comunes
- Hágaselo vd. mismo
Naming
Management
Monitoring
Eventing
Metering
Authentication
Security
Compensation
Routing
Encryption
Reliable Delivery
Transactions
Signatures
Session/Context Mgmt.
45Qué es GXA?
- Global XML Web Services Architecture (GXA) es un
framework de protocolos para Servicios Web - Funcionalidades a nivel de infraestructura
- Construida sobre la base existente de XML, SOAP,
XML Schemas y WSDL - GXA es un conjunto de especificaciones
- EspecÃficamente, no es un producto
46Por qué GXA?
- Reutilización a nivel de protocolo
- Encontrar escenarios comunes implementados por
Servicios Web - Generalizarlos, e proporcionar implementaciones
robustas y optimizadas - Por qué especificar?
- Alto grado de interoperabilidad
- Aumenta la productividad, con herramientas que se
encargan de la fontanerÃa
47Principios de diseño de GXA
- Propósito general
- Neutral con respecto al transporte y dominio de
aplicación - Basado en estándares
- Interoperabilidad entre fabricantes es crÃtico
- Federado
- Sin punto central de administración, control, o
fallo - Modular
48Especificaciones GXA (1)
- WS-Routing (octubre 2001)
- WS-Referral
- Microsoft
- WS-Inspection (noviembre 2001)
- Microsoft, IBM
- WS-Security (abril 2002)
- Microsoft, IBM, VeriSign
- WS-Attachments (junio 2002)
- DIME (Direct Internet Message Exchange)
- Microsoft, IBM IETF Internet Draft
49Especificaciones GXA (2)
- WS-Transaction (agosto 2002)
- WS-Coordination
- Microsoft, IBM, VeriSign
- BPEL4WS (agosto 2002)
- Microsoft, IBM, BEA
- WS-Policy (diciembre 2002)
- WS-PolicyAttachment
- WS-PolicyAssertions
- Microsoft, IBM, BEA, SAP
50WS-Security
- Identidad cómo representar un token de seguridad
- Certificado X.509
- Ticket Kerberos
- Claves opacas (por ejemplo, usuario/contraseña)
- SAML, XrML (WS-Security Profile for XML-Based
Tokens) - Confidencialidad cómo encriptar mensajes SOAP
con XML-Encrpytion - Integridad cómo firmar un mensaje SOAP con
XML-Signature
51Roadmap de seguridad
WS-Secure Conversation
WS-Federation
WS- Authorization
WS-SecurityPolicy
WS- Trust
WS- Privacy
WS-Security
SOAP
En fase de definición
Publicada
52WS-Transactions
- Depende de WS-Coordination y WS-Security
- Define dos tipos de transacciones
- Atomic Transactions
- Corta duración
- Basadas en el modelo 2-Phase-Commit
- Para uso dentro de una organización
- Business Activities
- Larga duración
53www.ws-i.org
- Iniciativa para Servicios Web XML
- Más de 100 empresas
- Interoperabilidad entre plataformas, aplicaciones
y lenguajes
54Web Services Enhancements (WSE)
- Conjunto de clases construidas encima del
Framework de .NET - Implementa...
- WS-Security
- WS-Attachments
- DIME
- WS-Referral
- WS-Routing
55Resumen
- Servicios Web hoy
- Pila básica de protocolos
- Punto-a-punto
- Criterios de diseño de Servicios Web
- Patrón façade (gt fachada)
- Extensibilidad
- Interoperabilidad
- Tipos de procesos (larga duración, etc.)
- Servicios Web mañana
- GXA
- Extremo-a-extremo
56Ideas clave...
- Servicios Web fachada (o façade)
- Servicios Web débilmente acoplados
- 3. Servicios Web en plena ebullición
- Hoy punto-a-punto
- Mañana extremo-a-extremo
- Y si no estás haciendo Servicios Web,
- empezad ya! ?
pueden ser débilmente acoplados
57Forum de Desarrolladores Corporativos SERVICIOS
WEB XML EN .NETY cómo cambian la manera de
diseñar aplicaciones
Patrocinado por