Title: Alberto Guirao Rico
1Web Services con .NET
- Alberto Guirao Rico
- Jesús Barahona Esteve
2Agenda
- Visión general
- Infraestructura
- Desarrollo de un servicio Web
- Invocación de un servicio Web
- Bibliografía
3Visión general - Qué es un web Service?
- Definición
- Es una unidad de lógica de aplicación que ofrece
datos y servicios a otras aplicaciones. - Cómo funciona?
- Las aplicaciones acceden a los servicios Web a
través de estándares como HTTP, XML y SOAP. - Independencia de cómo se haya implementado el
servicio Web y acceso desde cualquier dispositivo.
Servicios Web
Servicios Web
4Visión general - Escenario
Otros servicios Web
Servicios Webde tus socios
Internet XML
TuCompañia.com
Usuarios finales
Capa de lógica de negocio de la aplicación
Capa de acceso a datos y almacenamiento
Otras aplicaciones
5Visión general - Para qué sirven?
- Permiten interconectar
- Aplicaciones
- Diferentes clientes
- No sólo browsers
- Cualquier dispositivo
- PC, móvil, PDA, ...
- Distribución de la lógica de la aplicación
- Permiten una Web programable
- No sólo puramente interactiva
6Visión general - Qué aporta?
- Nuevas oportunidades empresariales facilitan la
comunicación con los socios. - Ofrecen a los usuarios experiencias mucho más
personalizadas e integradas, por medio de la
nueva gama de dispositivos inteligentes. - Reducen la duración del ciclo de creación.
- Ponen fácilmente sus propios servicios Web XML a
disponibilidad de otros.
7Visión general - Ejemplos
- E-commerce venta de libros, música online y
otros productos - Seguimiento de mercancías UPS, FedEx
- Parte meteorológico
- Consulta de mapas online
- TerraServer TerraServer.Microsoft.Net
- Servicios web gratuitos en www.XMethods.com
8Agenda
- Visión general
- Infraestructura
- Desarrollo de un servicio Web
- Invocación de un servicio Web
- Bibliografía
9Infraestructura - Tecnologías subyacentes
Direcory Publish Find Services UDDI
Inspection Find Services on server DISCO
Description Formal Service Descriptions WSDL
Wire Format Service Interactions SOAP
Universal Data Format XML
Communications Internet
Simple, Open, Broad Industry Support
10Infraestructura - Tecnologías subyacentes
- XML (eXtensible Markup Language)
- Formato universal para documentos estructurados y
datos en la Web administrado por W3C - UDDI (Universal Description, Discovery and
Integration) - Servicio de directorio que permite publicar y/o
describir servicios Web - DISCO
- Permite encontrar servicios Web en un sitio dado
- WSDL (Web Service Description Language)
- Una gramática basada en XML que permite describir
las capacidades de un servicio Web - SOAP (Simple Object Access Protocol)
- Protocolo ligero para el intercambio de
información en entornos distribuidos y
descentralizados administrado por W3C
11Infraestructura - Cómo acceder?
Directory http//www.uddi.org
UDDI
UDDI u otro servicio de directorio
Localiza un servicio
Enlace al Discovery Document (XML)
Inspection http//www.ibuyspy.com/ibuyspy.disco
DISCO
Pide un Discovery Document
Cliente del servicio Web
Devuelve el Discovery Document (XML)
WSDL
Description http//www.ibuyspy.com/ibuyspycs/Insta
ntOrder.asmx?wsdl
Pide una descripción del servicio
Servicio Web
Devuelve la descripción del servicio (XML)
SOAP
Wire Format
Pide un servicio
Devuelve la respuesta del servicio (XML)
12Agenda
- Visión general
- Infraestructura
- Desarrollo de un servicio Web
- Invocación de un servicio Web
- Bibliografía
13Desarrollo de un servicio Web - Introducción
- Tiene extensión .asmx
- Contiene código pero no la interficie de usuario
- Herramientas
- Notepad
- Simplemente crear el archivo .asmx
- Visual Studio .NET
- Crear un proyecto ASP.NET Web Service
- Sun ONE y otras plataformas
14Desarrollo de un servicio Web - Código
lt_at_ WebService Languagec ClassServicioMates
gtUsing System.Web.ServicesPublic class
ServicioMates WebService WebMethod public
int suma( int num1, int num2 ) return num1
num2 WebMethod public int resta( int
num1, int num2 ) return num1 - num2
15Desarrollo de un servicio Web - Publicación
- Visual Studio .NET hace todo lo necesario
- Genera un proxy del servicio Web
- Permitirá a los desarrolladores programar contra
el servicio Web - Publica el contrato WSDL
- Genera el fichero .vsdisco
- Enlace al recurso que proporcionará el WSDL
- Si tenemos instalado .NET Framework
- Colocamos el fichero .asmx en el root de nuestro
servidor Web. - Cuando alguien haga una petición a nuestro
servicio Web, .NET generará todo lo necesario y
dará una respuesta.
16Agenda
- Visión general
- Infraestructura
- Desarrollo de un servicio Web
- Invocación de un servicio Web
- Bibliografía
17Invocación de un servicio Web
- Desde cualquier browser
- http//servidor/ServicioMates.asmx
- Resultado
18Invocación de un servicio Web
- Desde cualquier browser
- http//servidor/ServicioMates.asmx?opsuma
19Invocación de un servicio Web
- Desde cualquier browser
- http//servidor/ServicioMates.asmx/suma?num14num
22 - Equivale a un HTTP-GET
- Devuelve un mensaje en XML con el resultado
GET /ServicioMates.asmx/suma?num1stringnum2stri
ng HTTP/1.1 Host servidor
lt?xml version"1.0" encoding"utf-8" ?gt ltint
xmlns"http//servidor/"gt6lt/intgt
20Invocación de un servicio Web
- Desde cualquier browser
- http//servidor/ServicioMates.asmx?WSDL
- Devuelve un mensaje en XML con el resultado
lt?xml version"1.0" encoding"utf-8" ?gt
ltdefinitions xmlnshttp"http//schemas.xmlsoap.o
rg/wsdl/http/" ... xmlns"http//schemas.xmlsoap.o
rg/wsdl/"gt lttypesgt ltsschema elementFormDefault"q
ualified" targetNamespace"http//servidor/"gt
ltselement name"suma"gt ltscomplexTypegt
ltssequencegt ltselement minOccurs"1"
maxOccurs"1" name"num1" type"sint" /gt
ltselement minOccurs"1" maxOccurs"1"
name"num2" type"sint" /gt lt/ssequencegt lt/sc
omplexTypegt lt/selementgt ...
21Invocación de un servicio Web
- Desde una aplicación
- Crear el proxy de acceso al servicio Web remoto
- Añadir una referencia Web al sitio donde se
encuentra el servicio o - Crear el proxy manualmente
- wsdl http//servidor/ServicioMates.asmx?WSDL
- Acceder de forma normal
- ClienteMates.cs
Using System class App public static void
Main() ServicioMates sm new
ServicioMates() int suma sm.suma( 3, 5
) Console.WriteLine( suma )
22Invocación de un servicio Web
Servicio Web
... WebMethodpublic int suma(int num1,int
num2) return num1 num2 ...
Internet XML
23Invocación de un servicio Web
- Desde una página web ASP.NET
- ClienteMates.aspx
- ASP.NET UI
- Operandos Text Box
- Metodos Botones
- Resultado Label
- Manipulador de eventos
- OnServerClick
24Agenda
- Visión general
- Infraestructura
- Desarrollo de un servicio Web
- Invocación de un servicio Web
- Bibliografía
25Bibliografia
- Microsoft XML Web Services
- http//msdn.microsoft.com/library/default.asp?url
/nhp/Default.asp?contentid28000442 - XML
- http//www.w3.org/TR/REC-xml
- Especificación de SOAP
- http//www.w3.org/TR/SOAP
- Especificación de WSDL
- http//www.w3.org/TR/wsdl
- UDDI
- www.uddi.org
26Bibliografia - Servicios Web gratuitos
- XMethods
- Servicios Web implementados desde diversas
plataformas - http//www.XMethods.com
- TerraServer
- Conjunto de servicios, como por ejemplo un visor
de mapas topográficos de Estados Unidos - http//TerraServer.Microsoft.net