Presentación Web Services Interoperability and SOAP Keith Ballinger Microsoft Corporation Alvaro Castromán Alfonso 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 example POST /test/simple.asmx HTTP/1.1 Host: Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: " Hola Mundo
SOAP Responce example: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length <soap:Envelope xmlns:xsi=" xmlns:xsd=" xmlns:soapenc=" xmlns:tns=" xmlns:soap=" <soap:Body soap:encodingStyle=" Hola Mundo
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: “ 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ículo Ej. 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ículo La 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: ¡Hola!
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