Vista previa del material en texto
ACCESO A SERVICIOS Y SOAP Juan Carlos Araujo H docenteibp@gmail.com Aplicaciones web: Escenario típico Figura extraída de “Understanding Web Services”: http://www7.software.ibm.com/vad.nsf/Data/Document4362 http://www7.software.ibm.com/vad.nsf/Data/Document4362 Servicios web: Escenario típico Figura extraída de “Understanding Web Services”: http://www7.software.ibm.com/vad.nsf/Data/Document4362 Fernando Pérez Costoya José María Peña Sánchez http://www7.software.ibm.com/vad.nsf/Data/Document4362 Integración de servicios web Figura extraída de “Understanding Web Services”: http://www7.software.ibm.com/vad.nsf/Data/Document4362 CostJosé María Peña Sánchez http://www7.software.ibm.com/vad.nsf/Data/Document4362 Protocolos para acceder a los Servicios Web •HTTP-GET. •HTTP-POST. •SOAP. HTTP-GET • Forma en que normalmente se solicita una página Web, ejemplo: http://www.acme.com/inicio.aspx?id=David&equipo=mexico • ASP.NET puede obtener los valores con: • Request.QueryString(“id”) • Request.QueryString(“equipo”) Cuando se usa el método “GET” para el envío de datos en un formulario. http://www.acme.com/inicio.aspx?id=David&equipo=mexico HTTP-POST • En vez de adjuntar los parámetros al URL, se colocan en el mensaje de petición HTTP. Es la manera común que usan los formularios HTML. <form method=“post”> <input type=“Text” id=“id”> … </form> • ASP.NET los puede recuperar con: Request.Form(“id”) Protocolo de transporte: HTTP • UsotípicodeoperaciónPOSTdeHTTP: – datosde formulario ypágina derespuesta • UsodePOSTparapeticióny respuestadeRPC – Universalmentedisponible – Atraviesael firewall de la organización POST/~ssoo/consultaBD.cgi HTTP/1.0 Content-length: 76 ..................... DNI=87654321&MAT=980000&Asignatura=sod&Curso=2002&Convocatoria=Jun&Tipo=acta HTTP/1.1 200 OK Content-Type: text/html;charset=iso-8859-1 ..................... <HTML> Protocolo de comunicación: SOAP • SimpleObjectAccessProtocol (CandidateRecommendation) • SOAP=HTTP+XML – EspecificacómomandarmensajesXMLsobreHTTP – Defineel contenedor del mensaje (tambienenXML) – Protocologeneral, nosólo para RPC, tambiénunidireccional • Estructura demensajecontenedorSOAP: – Sobre(Envelope): Cabecera (Header) [opcional] +Cuerpo(Body) • Cabecera : info. complementaria (p.ej. enRPCunIDde transacción) • Cuerpo: contieneel mensajeoriginal • SOAPparaRPC: – Enpetición: Identificador enPOSTidentifica destinodeRPC • Seguridad: – UsandoHTTPS(SSL) – Nuevapropuesta:WS-Security SOAP SOAP • Simple Object Access Protocol • Tecnología de mensajería basada en XML que especifica todas las reglas necesarias para ubicar servicios web, integrarlos en aplicaciones y establecer la comunicación entre ellos • Recomendación: http://www.w3.org/TR/soap • Implementaciones de SOAP: –http://www.soapware.org/directory/4/implementations –IBM Web Services Toolkit –Microsoft SOAP Toolkit 3.0 –Sun Java Web Services Developer Pack 1.3 –PHP-SOAP, NuSOAP http://www.w3.org/TR/soap http://www.soapware.org/directory/4/implementations SOAP • Basado en XML para transmitir información. • Además de soportar pares nombre/valor, soporta datos complejos como datos enriquecidos, clases y objetos. • SOAP también transmite sobre HTTP pero no esta limitado al modelo de petición/respuesta. Componentes de SOAP SOAP • Envelope: define los espacios de nombres (namespaces) que serán empleados en el resto del mensaje. Los valores típicos son: –xmlns:SOAP-ENV→ SOAP Envelope namespace –xmlns:xsi→ XML Schema for Instances –xmlns:xsd→ XML Schema for DataTypes • Header: elemento opcional que proporciona información auxiliar para los procesos de autentificación, las transacciones y los pagos • Body: es la parte principal del mensaje y contiene el nombre del método y los parámetros necesarios para invocar el servicio web SOAP Y XML SOAP • Con SOAP podemos intercambiar cualquier documento XML, pero no otro tipo (imágenes, documentos PDF, etc.) • SOAP with Attachment (SwA) → SOAP Message Transmission Optimization Mechanism: –Permite añadir datos que no sean XML al mensaje –Parte adjunta (attachment) Anatomía de un mensaje SOAP SOAP y HTTP Encabezado HTTP Envoltura Header (opcional) Cuerpo Un ejemplo de SOAP en RPC POST/StockQuoteHTTP/1.1 ...................... <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePricexmlns:m="http://example.com/stockquote.xsd"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> HTTP/1.1200 OK ............... <SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="http://example.com/stockquote.xsd"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> P e tic ió n R e s p u e s ta http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/encoding/ http://example.com/stockquote.xsd http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/encoding/ http://example.com/stockquote.xsd Desarrollo de un servicio Web • Programaciónde biblioteca de servicio – Enalgunos entornoshayque incluir informaciónespecífica • EnVisualStudio .Net: etiqueta [WebMethod] sobre métodos exportados • Generación automática de fichero WSDL – Generalmente,dentrode la generacióndeaplicación deservicio • EnVisualStudio .Net:Proyecto de tipo WebService • Enservidor: fichero WSDLinforma sobre cómoactivar servicio – Normalmente, lo haceunservidor webconsoportedeserviciosweb • Desarrollode cliente: – Obtener ficheroWSDLygenerarproxypara aplicación cliente • EnVisualStudio .Net: “AddWebReference” Modelo de programación de los Servicios Web • El modelo de programación sobre el cual está basado .NET es el de software como servicio, a través de SOA (Service Oriented Architecture - Arquitectura Orientada a Servicios). • En base a este modelo los servicios se exponen una funcionalidad bien definida a la aplicación que la requiera. De manera que la aplicación final ejecuta un conjunto de estos servicios, añade su lógica particular y le presenta una interfaz al usuario final. Modelo de programación de los Servicios Web • Un servicio funciona como una aplicación independiente, no una isla. Teniendo sus propias reglas de negocio, datos, procedimientos de administración y operación. • Expone toda su funcionalidad utilizando una interfaz basada en mensajes, por lo tanto carece de una interfaz de usuario. SOA • SOA contiene tres actores: • Un solicitante de servicio, • un proveedor de servicios, y • un registro de servicios. Un solicitante de servicio • es responsable de encontrar una descripción de servicio publicada en uno o más registros de servicios y de utilizar las descripciones de servicio para lograr invocar los servicios Web hospedados por los proveedores de servicios Un proveedor de servicio • es responsable de crear una descripción de servicio, publicando o publicitando la descripción del servicio en uno o más registros de servicios, y recibir mensajes de invocación de servicios Web de uno o más solicitantes Un registro de servicios • Es es responsable de anunciar descripciones de servicios Web publicadas por los proveedores de servicios y permitir los solicitantes de servicios buscar en la colección de descripción de servicios contenidos en el registro de servicios. • Una vez encontrada la información, el servicio del registro no es necesario y el resto de la interacción se da directamente entre el solicitante del servicio y el proveedor de servicio Proceso de los Servicios Web Modelo de Servicios Web entre Cliente y Servidor En el modelo de servicio Web: 1. Crea el archivo .asmx que incluye el espacio de nombre,clases, propiedades y métodos. 2. Declara métodos como métodos Web que pueden accederse por Internet. Ejemplo .asmx simple REFERENCIAS BIBLIOGRÁFICAS Textos: • Eric Newcomer (2018) Understanding Web Services- XML, WSDL, SOAP and UDDI. Kindle Edition, 606 pages Published November 30th 2018 by Packt Publishing • Introducción a Web Services con herramientas de desarrollo Microsoft. Por Oscar González Moreno Equipo Grupo Danysoft. Referencias electrónicas • Como Crear y Consumir un Web Service en ASP.NET (C#) https://www.youtube.com/watch?v=dl1xfgMxpbU