Desarrollo y consumo de servicios web asp.net

37
Desarrollo y consumo de servicios web Antonio J. Contreras Septiembre 2005

Transcript of Desarrollo y consumo de servicios web asp.net

Page 1: Desarrollo y consumo de servicios web asp.net

Desarrollo y consumo de servicios web

Antonio J. Contreras Septiembre 2005

Page 2: Desarrollo y consumo de servicios web asp.net

(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

Page 3: Desarrollo y consumo de servicios web asp.net

(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

Page 4: Desarrollo y consumo de servicios web asp.net

(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)

Page 5: Desarrollo y consumo de servicios web asp.net

(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.

Page 6: Desarrollo y consumo de servicios web asp.net

(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

Page 7: Desarrollo y consumo de servicios web asp.net

(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

Page 8: Desarrollo y consumo de servicios web asp.net

(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)

Page 9: Desarrollo y consumo de servicios web asp.net

(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

Page 10: Desarrollo y consumo de servicios web asp.net

(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

Page 11: Desarrollo y consumo de servicios web asp.net

(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.

Page 12: Desarrollo y consumo de servicios web asp.net

(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.

Page 13: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

13

Creación de servicios web

Antes de nada Hola mundo.

Page 14: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

14

Creación de servicios web

Ejercicio 1: Paso de parámetros: sumar dos enteros

Page 15: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

15

Creación de servicios web

Ejercicio 2: Tipos de datos complejos: DataSet.

Page 16: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

16

Creación de servicios web

Ejercicio 3: Uso de encabezados soap para

autenticación.

Page 17: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

17

Creación de servicios web

Ejercicio 4: Excepciones soap.

Page 18: Desarrollo y consumo de servicios web asp.net

(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

Page 19: Desarrollo y consumo de servicios web asp.net

(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>

Page 20: Desarrollo y consumo de servicios web asp.net

(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>

Page 21: Desarrollo y consumo de servicios web asp.net

(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>

Page 22: Desarrollo y consumo de servicios web asp.net

(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>

Page 23: Desarrollo y consumo de servicios web asp.net

(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>

Page 24: Desarrollo y consumo de servicios web asp.net

(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"/>

Page 25: Desarrollo y consumo de servicios web asp.net

(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.

Page 26: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

26

Consumo de Servicios Web

Ejemplo 1: Sumar 2 números

Page 27: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

27

Consumo de Servicios Web

Ejercicio 1: Servicio de traducción automática:

Altavista Babelfish.

Page 28: Desarrollo y consumo de servicios web asp.net

(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

Page 29: Desarrollo y consumo de servicios web asp.net

(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/

Page 30: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

30

Consumo de Servicios Web

Page 31: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

31

Consumo de Servicios Web

Ejercicio 3: Rellenar un DataGrid con un DataSet.

Page 32: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

32

Consumo de Servicios Web

Ejercicio 4: Cabeceras soap.

Page 33: Desarrollo y consumo de servicios web asp.net

(CC) Antonio Jesús Contreras Sánchez Septiembre 2005

33

Consumo de Servicios Web

Ejercicio 5: Excepciones soap.

Page 34: Desarrollo y consumo de servicios web asp.net

(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

Page 35: Desarrollo y consumo de servicios web asp.net

(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

Page 36: Desarrollo y consumo de servicios web asp.net

(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

Page 37: Desarrollo y consumo de servicios web asp.net

(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/