Desarrollo y consumo de servicios web asp.net

Post on 22-May-2015

647 views 1 download

Transcript of Desarrollo y consumo de servicios web asp.net

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/