desarrollo y consumo de servicios web asp.net
TRANSCRIPT
Desarrollo y consumo de servicios web
Antonio J. Contreras Septiembre 2005
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
2
Introducción a los Servicios Web
Introducción a los Servicios Web ¿Qué son? Justificación de la tecnología Componentes Estándares de los servicios Web
Creación de Servicios Web Consumo de Servicios Web
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
3
Qué son los servicios Web - I
Definición que varía según el autor, dependiendo de si el servicio incluye todos los componentes del Web Services Protocol Stack.
A “grosso modo”, podemos definirlos como un conjunto de tecnologías que permiten computación distribuida
Cambio de filosofía respecto a la computación distribuida tradicional:
Cliente – servidor a peer-to-peer
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
4
Qué son los servicios Web - II
Definición estricta:
un Servicio Web es una colección de protocolos y estándares que sirve para intercambiar datos entre aplicaciones. Las aplicaciones que proporcionan datos (servicio) pueden ser: Descritas por un lenguaje de descripción del servicio
(WSDL) Publicadas en un registro (UDDI) Encontradas en ese registro Invocadas para usar el servicio, usando un formato de
mensaje (SOAP)
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
5
Qué son los servicios Web - III
Definición genérica: Relajación de la definición estricta. No
tienen por que estar todos los elementos. conjunto de tecnologías que permiten
utilizar funcionalidad existente en otras aplicaciones (servicio) a través de una infraestructura Web.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
6
Justificación de la tecnología
Reutilización: aprovechar recursos existentes que serían costosos de implementar
Mejorar tecnologías previas: RPC Java - RMI CORBA DCOM Problemas: firewalls, no multiplataforma,
tecnología propietaria. Soportado por la industria
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
7
Justificación de la tecnología - II
No todo son ventajas: Problemas con transacciones Ineficiente: basado en texto Problemas de seguridad: basado en http
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
8
Componentes de un Servicio Web
Servicio (f(x)): Proveedor de
servicio Service provider)
Registro de servicios (Service broker)
Solicitante de servicios (Service requester)
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
9
Estándares de Servicios Web - I
XML (eXtended Markup Language): Estándar de manejo de datos del W3C El restos de estándares se basan en
éste. Otras tecnologías asociadas: Xschema,
Xpath, XSL. La información es fácilmente serializable:
son cadenas de texto, fácil transporte por la red
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
10
Estándares de servicios Web
SOAP (Simple Object Access Protocol): Evolución de xml-rpc Usa http como transporte (w3c) No ligado a tecnologías de componentes No ligado a lenguajes de programación Mensaje soap:
Envoltorio Cabecera Cuerpo
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
11
Estándares de servicios Web
WSDL (Web Services Description Lenguaje): Estándar de descripción de servicios.
Soap no especifica nada. Trata de describir una aplicación
(servicio) para saber que hace, como lo hace y donde se localiza.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
12
Estándares de servicios Web
UDDI (Universal Description, Discovery and Integration): Existe un gran numero de servicios disponibles:
necesidad de organización. Directorio para almacenar información de
servicios web, entre otra, su descripción (wsdl) tModel: abstracción técnica,metadatos e
interfaces del servicio (generalmente en wsdl) Dos acciones básicas: pedir información y
publicar información.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
13
Creación de servicios web
Antes de nada Hola mundo.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
14
Creación de servicios web
Ejercicio 1: Paso de parámetros: sumar dos enteros
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
15
Creación de servicios web
Ejercicio 2: Tipos de datos complejos: DataSet.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
16
Creación de servicios web
Ejercicio 3: Uso de encabezados soap para
autenticación.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
17
Creación de servicios web
Ejercicio 4: Excepciones soap.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
18
Consumo de Servicios Web
Ficheros generados por Visual Studio .net: Archivo .wsdl Archivo .disco Archivo .map Archivo .cs
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
19
.wsdl: QUÉ
Tipos de datos: <types> <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"> <s:element name="Sumar"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" /> </s:sequence> </s:complexType> </s:element> <s:element name="SumarResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="SumarResult" type="s:int" /> </s:sequence> </s:complexType> </s:element> </s:schema> </types>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
20
. wsdl: QUÉ
Mensajes: análogos a parámetros de una función.<message name="SumarSoapIn">
<part name="parameters" element="s0:Sumar" />
</message>
<message name="SumarSoapOut">
<part name="parameters" element="s0:SumarResponse" />
</message>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
21
. wsdl: QUÉ
Tipos de puerto: lista de operaciones permitidas y mensajes intercambiados
<portType name="ej1_sumarSoap">
<operation name="Sumar">
<input message="s0:SumarSoapIn" />
<output message="s0:SumarSoapOut" />
</operation>
</portType>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
22
.wsdl: CÓMO
Bindings: definición de protocolos de comunicación
<binding name="ej1_sumarSoap" type="s0:ej1_sumarSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" /> <operation name="Sumar"> <soap:operation soapAction="http://tempuri.org/Sumar" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
23
.wsdl:DÓNDE
Servicio: conjunto de puertos, dónde puerto indica la URI donde se hospeda el servicio
<service name="ej1_sumar">
<port name="ej1_sumarSoap" binding="s0:ej1_sumarSoap">
<soap:address location="http://localhost/WebService1/ej1_sumar.asmx" />
</port>
</service>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
24
.disco
Permite establecer vínculos con las descripciones del servicio, que pueden ser publicas o no
<contractRef ref="http://localhost/WebService1/ej1_sumar.asmx?wsdl" docRef="http://localhost/WebService1/ej1_sumar.asmx"/>
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
25
.cs
Clase que actúa como proxy en el cliente.
Aporta transparencia: no tenemos que preocuparnos de conexiones, mensajes soap, etc.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
26
Consumo de Servicios Web
Ejemplo 1: Sumar 2 números
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
27
Consumo de Servicios Web
Ejercicio 1: Servicio de traducción automática:
Altavista Babelfish.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
28
Consumo de Servicios Web
La url de descripción de servicio es conocida: no es necesario su descubrimiento:
http://www.xmethods.net/sd/2001/BabelFishService.wsdl
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
29
Consumo de Servicios Web
Ejercicio 2: descubrimiento de servicios web http://uddi.microsoft.com/ http://services.xmethods.net/
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
30
Consumo de Servicios Web
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
31
Consumo de Servicios Web
Ejercicio 3: Rellenar un DataGrid con un DataSet.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
32
Consumo de Servicios Web
Ejercicio 4: Cabeceras soap.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
33
Consumo de Servicios Web
Ejercicio 5: Excepciones soap.
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
34
Seguridad en servicios Web
Soap no propone nada acerca de seguridad Primera solución: aplicar políticas de seguridad como el resto
de aplicaciones web: SSL IIS/windows: mecanismos de autenticación https
Problema: SSL es de una capa inferior, no distingue entre varios servicios
web del mismo punto de red, y https esta ligado con http Atados a plataforma windows, problemas con servicios web
complejos multiplataforma Mecanismos ajenos a los protocolos de servicios web
Varias soluciones propuestas por la industria
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
35
Seguridad en servicios Web
WS-Security: Propuesto por IBM, Microsoft y VeriSign,
actualmente gestionado por Oasis Extensión de SOAP Intercambio de tokens de seguridad entre
pares: integridad de mensaje, confidencialidad y autenticación
Problema en servicios complejos, gran trafico de tokens de seguridad
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
36
Seguridad en servicios Web
SAML (Security Assertion Markup Language): framework para intercambiar datos de autenticación y autorización en servicios web.
Conceptos de proveedor de identidades y proveedor de servicios
Propuesto por Oasis Mecanismo Single Sign-on
(CC) Antonio Jesús Contreras Sánchez Septiembre 2005
37
Enlaces de interés Generales
http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpguide/html/cpconhandlingraisingexceptionsinxmlwebservices.asp
es.wikipedia.org Sobre SOAP:
http://www.perfectxml.com/articles/xml/soapguide.asp http://www.perfectxml.com/soap.asp
Sobre WSDL: http://www.w3.org/TR/wsdl http://www.devxpert.com/tutors/wsdl/wsdl.asp http://www-128.ibm.com/developerworks/webservices/library/ws-soap/ http://www.pocketsoap.com/wsdl/
Sobre UDDI: http://www.uddi.org/ http://uddi.microsoft.com/ http://www.soapclient.com/uddisearch.html http://www-306.ibm.com/software/solutions/webservices/uddi/ http://www.uddicentral.com/ http://www.zvon.org/xxl/uddiReference/Output/ http://services.xmethods.net/