presentación web services interoperability and soap keith ballinger microsoft corporation alvaro...
TRANSCRIPT
Presentación
Web Services Interoperability and SOAP
Keith BallingerMicrosoft Corporation
Alvaro CastrománAlfonso Odriozola
Desarrollo
¿Qué son Web Services?
Introducción a SOAP
Contenido del Artículo
Trabajos Relacionados
Conclusiones
¿Qué son Web Services?
Colección de funciones empaquetadas como una unidad y publicada en la red
Aplicación programable a la que se tiene acceso de forma lógica utilizando los protocolos estándar de Internet
¿Qué son Web Services?
Capa intermedia entre el código de aplicación y el código de usuario
Independiza del lenguaje de implementación
¿Qué son Web Services?
Tres componentes:Service Listener: lenguaje de
transporte (HTTP, SOAP)
Service proxy: decodifica solicitudes para el código de aplicación
Código de Aplicación
¿Qué son Web Services?
Provee Just-In-Time Integration
Web Service Technology Stack:Discovery (UDDI)Description (WSDL)Packaging (XML / SOAP)Transport (TCP / SMTP / HTTP)Network (idem a OSI)
¿Qué son Web Services?
Introducción a SOAP
Simple Object Access Protocol
Provee un mecanismo simple y ligero para intercambio de información estructurada y tipeada en un ambiente descentralizado y distribuido usando XML
Introducción a SOAP
Puede ser usado desde sistemas de mensajeria hasta RPC
Consiste de tres partes: envelope encoding rules RPC representation
Introducción a SOAP
Envelope: define un marco para expresar qué es un mensaje, quién debería manejarlo, y qué es opcional o no.Los mensajes contienen: Envelope: la raíz del documento XML Header: mecanismo para agregar
características a un mensaje SOAP Body: contiene la información obligatoria
para el receptor del mensaje
Introducción a SOAP
Encoding rules: define un mecanismo de serialización para intercambiar instancias de tipos de datos definidos por aplicaciones
RPC representation: define una convensión para representar llamadas y respuestas a procedimientos remotos
SOAP Request examplePOST /test/simple.asmx
HTTP/1.1
Host: 131.107.72.13
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://soapinterop.org/echoString"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance“ xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:echoString>
<inputString>Hola Mundo</inputString>
</tns:echoString>
</soap:Body>
</soap:Envelope>
SOAP Responce example:HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema“ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/“ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:echoStringResponse> <Return>Hola Mundo</Return>
</tns:echoStringResponse> </soap:Body>
</soap:Envelope>
Contenido del Artículo
Ofrece una introducción a los problemas de interoperabilidad relativos a las llamadas RPC con SOAP
Tres problemas de interoperabilidad: HTTP XML SOAP
Contenido del Artículo
Actualidad:
plataformas heterogéneas para la creación de aplicaciones
utilizando sus propios protocolos
disponen de una capacidad limitada para compartir datos
Contenido del Artículo
Tendencia:
estándares para los formatos y el intercambio de datos
evolución rápida hacia un nuevo paradigma informático
perfecta integración de Web Services entre las barreras de hardware y software.
Contenido del Artículo
Ej. problemas de transporte (HTTP):
encabezado HTTP SOAPAction SOAPAction: “http://tempuri.org/” SOAPAction:
no todas las API cliente HTTP permiten establecer un valor nulo en un encabezado HTTP
Contenido del Artículo
Soluciones: reparar los API cliente asegurarse de que los servidores no
requieran un valor nulo
Una forma de evitar estos problemas: asegurase de que la API HTTP utilizada sea
sólida y ya conocida para trabajar en el Web
Contenido del ArtículoEj. problemas de XML: Byte Order Mark (BOM)
especificación de la codificación de los datos HTTP: en el encabezado Content-Type XML: insertando un conjunto de bytes que especifiquen la codificación
en UTF-16 se necesita el BOM, incluso si está presente el Content-Type
en UTF-8 no es obligatorio
Contenido del Artículo
Algunas implementaciones envian la marca BOM para UTF-8 (esto es opcional)
Otras no pueden procesar XML sin BOM
Contenido del ArtículoLa solución en este caso consiste en evitar el envio, a menos que sea necesario
El manejo correcto de BOM resulta esencial en el procesamiento de mensajes UTF-16
La mejor solución una vez reconocidos los problemas consiste en hacer referencia a las especificaciones reales
Contenido del Artículo
Ej. problemas de SOAP:
si recibe un encabezado SOAP con un atributo mustUnderstand establecido como “1”, deberá entenderlo o generar un error
numerosas implementaciones no lo hicieron al principio
Contenido del Artículo
Ejemplo de mustUnderstand:
<SOAP-ENV:Header> <Foo SOAP-ENV:mustUnderstand="1"> ¡Hola! </Foo>
</SOAP-ENV:Header>
Temas Relacionados
Problemas en Apache SOAP:
Transporte: los APIs Apache SOAP del lado del cliente no tienen dificultad en generar valore null en SOAPAction
XML: si está codificado en UTF-8 e incluye un BOM la
solicitud fallará al usar Apache Xerces otro problema está relacionado con XML Schema,
hoy en día hay tres versiones
Temas Relacionados
SOAP:
no implementa el concepto de cabecera mustUnderstand de SOAP
Dependiendo de xsi:type: todo valor tipado debe ser explicitamente tipado en el envelope usando el atributo xsi:type
Apache SOAP no proporciona soporte para retornar más de un valor ya que se van más allá del ámbito de Java
Conclusiones
Se presenta una introducción práctica a problemas actuales de interoperabilidad con SOAP RPC
Puntos fuertes: división de problemas en tres tipos es preciso en su enfoque
Puntos débiles: es poco profundo en los temas tratados menciona pocos problemas
Conclusiones
Los objetivos planteados fueron alcanzados
Contribuciones: informa que existen estos tres tipos de problemas
Los artículos futuros tratarán: transmisión de mensajes del estilo "document" SOAP a través de SMTP y otros transportes WSDL y varias pruebas de encabezado SOAP