Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Servicios Web XML
Servicios Web XML
ndice
Descripcin
28
Descripcin
*****************************
Introduccin
Objetivos
Utilizar las plantillas de Visual Studio .NET para crear un servicio Web
XML.
*****************************
Introduccin
Uno de los retos con los que podemos enfrentarnos en la creacin de sitios Web
con rica funcionalidad es la integracin de aplicaciones. A menudo,
necesitamos combinar varias aplicaciones para formar una solucin nica y
fcil de utilizar. El problema de intentar conseguir una solucin de este tipo es
que las aplicaciones que necesitamos combinar pueden encontrarse en distintas
plataformas, cada una ejecutando un sistema operativo distinto. Adems, es
posible que las aplicaciones se hayan creado en diferentes lenguajes de
programacin.
Los servicios Web XML proporcionan un modelo simple, flexible y basado en
estndares para conectar aplicaciones a travs de Internet. Los servicios Web
XML nos permiten aprovechar la infraestructura existente en Internet, y enlazar
aplicaciones, con independencia de las plataformas, lenguajes de programacin
o modelos de objetos que se hayan utilizado para implementarlas.
En esta leccin, estudiaremos la utilidad y el proceso que existe tras invocar un
servicio Web XML desde un formulario Web Form.
Objetivos de la leccin
Explicar por qu los servicios Web XML son importantes para los
desarrolladores de aplicaciones Web.
*****************************
Introduccin
Comunicacin
aplicacin a aplicacin a
travs de Internet
Los servicios Web XML estn diseados para interactuar directamente con
otras aplicaciones a travs de Internet. En consecuencia, los servicios Web
XML no tienen interfaz de usuario (IU), sino que proporcionan interfaces
definidos por estndares denominados contratos que describen los servicios que
proporcionan.
Un servicio Web XML puede ser utilizado internamente por una sola aplicacin
o externamente por muchas aplicaciones accediendo a l a travs de Internet.
Independencia del
lenguaje
Independencia del
protocolo
Independencia de la
plataforma
Es posible acceder a los servicios Web XML mediante una interfaz estndar, lo
cual permite que sistemas distintos puedan trabajar juntos. Los servidores que
pueden soportar formularios Web Form tambin pueden soportar servicios Web
XML.
Asncrono
Los servicios Web XML son asncronos, ya que el objeto que realiza la peticin
en la aplicacin cliente y el objeto de respuesta del servicio Web XML son
sobres SOAP nicos que no requieren una conexin compartida. Las
interacciones entre la aplicacin cliente y el servicio Web XML pueden ser
posteriormente divididas en una peticin y respuesta inicial para invocar el
mtodo del servicio Web XML, y una segunda peticin para recoger los
resultados. Esta comunicacin asncrona permite tanto a la aplicacin que
realiza la peticin como al servicio Web XML la oportunidad de seguir
procesndose mientras la interaccin est en funcionamiento.
Basado en W3C
Los servicios Web XML estn basados en un estndar del World Wide Web
Consortium (W3C) que sigue evolucionando. De tal modo, las caractersticas
genricas de los servicios Web XML estn fijadas; sin embargo, pueden
agregarse nuevas caractersticas en el futuro.
Nota Para ms informacin sobre el estndar del servicio Web XML del W3C,
ver el sitio Web oficial de W3C en http://www.w3c.org.
Lluvia
Internet
El tipo de cambio es:
$1.56
Base de datos de
precios de billetes
*****************************
Introduccin
Caractersticas
Servicios de
autenticacin
Informes
meteorolgicos
Caractersticas
Precios de billetes de
avin
Valores de cotizacin
Resumen de noticias
Seguimiento de pedidos
Los servicios Web XML utilizan Internet; por tanto, la agencia de viajes
no necesita crear ni mantener conexiones dedicadas para ofrecer el
servicio.
Los servicios Web XML son independientes del lenguaje, protocolo y
plataforma; por tanto, los desarrolladores de la agencia de viajes no
necesitan aprender cmo se gener e implant el servicio Web XML
para poder utilizarlo.
El sitio Web puede ser capaz de cobrar a los proveedores del servicio
Web XML por el derecho de ofrecer servicios a la base de clientes del
sitio Web de la agencia de viajes.
XML y su descripcin
22 Descubrir el servicio Web XML
UDDI
Invocar el
servicio Web
XML desde el
formulario
Web Form
Mediante el
proxy
Web
Form
55
Proxy
22
11
33
.disco
44
.wsdl
66
Servicio Web
*****************************
Introduccin
Podemos encontrar servicios Web XML existentes para agregar a nuestro sitio
Web utilizando uno o ms servicios de descubrimiento. Estos servicios de
descubrimiento estn evolucionando y cambiando rpidamente a medida que el
desarrollo y uso de los servicios Web XML va ganando aceptacin en la
comunidad de Internet.
UDDI
Archivos .disco
Un archivo de descubrimiento esttico (.disco) es un documento XML que
contiene enlaces a otros recursos que describen los servicios Web XML.
Los archivos .disco se generan automticamente para un servicio Web XML
cuando se accede al servicio utilizando una URL con ?DISCO en la cadena
de consulta.
El siguiente cdigo muestra un ejemplo de un archivo .disco:
<?xml version="1.0" ?>
<disco:discovery
xmlns:disco="http://schemas.xmlsoap.org/disco"
xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl">
<wsdl:contractRef
ref="http://MyWebServer/UserName.asmx?WSDL"/>
</disco:discovery>
Archivos .vsdisco
Los archivos de descubrimiento dinmicos (.vsdisco) son documentos de
descubrimiento dinmico que Visual Studio .NET genera automticamente
durante la fase de desarrollo de un servicio Web XML.
Un archivo .vsdisco es un archivo basado en XML con un nodo raz
denominado <dynamicDiscovery>. Este nodo puede contener nodos
<exclude>. Cada nodo <exclude> contiene una ruta que el proceso de
descubrimiento dinmico no debera buscar.
Precaucin Para mantener el control sobre los servicios Web XML que
pueden descubrir los clientes, deberamos utilizar nicamente el
descubrimiento dinmico en los servidores Web de desarrollo.
10
Archivos WSDL
Protocolos de comunicacin.
11
*****************************
Introduccin
Objetivos de la leccin
Identificar los mtodos Web que estn disponibles desde un servicio Web
XML.
12
*****************************
Introduccin
Seleccionar un mtodo
del servicio Web XML
13
Los servicios Web XML siempre devuelven los datos en formato XML. La
siguiente ilustracin muestra la vista del navegador con el resultado de invocar
el servicio Web XML Stocks con el parmetro Contoso.
14
Tiempo: 5 Minutos
*****************************
Introduccin
15
16
*****************************
Introduccin
Objetivos de la leccin
17
Internet
SOAP
Servicio
Web XML
*****************************
Introduccin
Para invocar un servicio Web XML desde un formulario Web Form, debemos
crear una referencia Web al servicio Web XML en nuestro proyecto de
aplicacin Web. La referencia Web crea el objeto proxy que se utiliza para
comunicar con el servicio Web XML utilizando SOAP.
Qu es un proxy?
Una clase proxy es cdigo que parece exactamente igual a la clase que
representa, pero no contiene lgica de aplicacin. En lugar de ello, la clase
proxy contiene la lgica de combinacin y de transporte. Un objeto proxy
permite que un cliente acceda a un servicio Web XML como si fuera un objeto
COM local. El proxy debe estar en el equipo que dispone de la aplicacin Web.
Visual Studio .NET crea automticamente un proxy denominado reference.vb o
reference.cs cuando agregamos una referencia Web a un servicio Web XML.
Cuando creamos la referencia Web, Visual Studio .NET crea el archivo de
referencia, que es el cdigo proxy.
Los proxies y los servicios Web XML interactan utilizando SOAP, que es un
protocolo XML utilizado para intercambiar informacin estructurada y tipada.
Nota Para tener una vista previa de los mensajes SOAP de un servicio Web
XML, acceder al servicio Web XML URL directamente y examinar el cdigo
que muestra la pgina de descripcin HTML.
El proceso de acceder a un servicio Web XML mediante un proxy es el
siguiente:
1. El usuario enva una peticin URL a un formulario Web Form que requiere
una llamada a un servicio Web XML.
2. El formulario Web Form instancia el proxy, que invoca el servicio Web
XML utilizando SOAP.
La siguiente es la peticin SOAP para el mtodo Web GetRating en un
servicio Web XML Stocks y que pasa el argumento Contoso:
18
19
20
Cdigo de ejemplo en C#
*****************************
Introduccin
Nota Visual Studio .NET est optimizado para los servicios Web XML
creados por Visual Studio .NET. Es posible que ASP.NET no lea los
archivos .wsdl creados con otros programas, si los archivos incluyen
cadenas terminadas nulas.
21
C#
GetStocks.localhost.Service1 ProxyGetStocks =
new GetStocks.localhost.Service1();
Label1.Text = ProxyGetStocks.GetRating("Contoso")
C#
Label1.Text = ProxyGetStocks.GetRating("Contoso");
C#
22
*****************************
Introduccin
Crear un proxy
23
C#
Probar con un
explorador
Visualizar el archivo de
referencia
24
Servicio no disponible
GetStocks.StockWebRef.Service1
GetStocks.StockWebRef.Service1 ProxyGetStocks
ProxyGetStocks == new
new
GetStocks.StockWebRef.Service1();
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout
ProxyGetStocks.Timeout == 10000;
10000;
try
try
{{
lblMessage.Text
lblMessage.Text ==
ProxyGetStocks.GetRating(TextBox1.Text);
ProxyGetStocks.GetRating(TextBox1.Text);
}}
catch
catch (Exception
(Exception err)
err)
{{
lblMessage.Text
lblMessage.Text == err.Message;
err.Message;
}}
Introduccin
Try
'call the XML Web service
Catch err As Exception
Label1.Text = err.Message
End Try
C#
25
try
{
//call the XML Web service
}
catch (Exception err)
{
Label1.Text = err.Message;
}
Excepciones SOAP de
servicios Web XML
Try
'call your XML Web service
Catch err As SoapException
Label1.Text = "Unable to process your request"
End Try
C#
try
{
//call your XML Web service
}
catch (SoapException err)
{
Label1.Text = "Unable to process your request";
}
26
Evaluar la excepcin
*****************************
Introduccin
Ejecutar la demostracin
1. Volver a abrir el proyecto GetWeather de la prctica anterior.
2. Establecer el tiempo de espera de trycatch
3. Modificar el cdigo del controlador de evento del botn para establecer un
tiempo de espera de 10 segundos (10.000) y agregar cdigo al controlador
de evento del botn para aadir una instruccin trycatch sobre la llamada
al servicio Web XML.
El cdigo debera ser similar al siguiente:
C#
27
Ralentizar el servicio
Web XML
Imports System.Threading
C#
using System.Threading;
Thread.Sleep(40000)
C#
Thread.Sleep(40000);
Este cdigo har que el servicio Web XML funcione muy despacio para
simular un servicio Web XML que no est en lnea o que opera con mucha
lentitud.
Probar la excepcin
28
*****************************
Introduccin
Objetivos de la leccin
29
*****************************
Introduccin
30
31
Pgina .asmx
<%@
<%@ WebService
WebService Language="vb"
Language="vb"
Codebehind="Service1.asmx.vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1"
Class="XMLWebServiceName.Service1" %>
%>
Pgina .asmx.vb
Imports
Imports System
System
Imports
Imports System.Web.Services
System.Web.Services
Class
Class Service1
Service1
<WebMethod()>
<WebMethod()> Public
Public Function
Function function1()
function1() As
As type
type
'function_here
'function_here
End
End Function
Function
End
End Class
Class
Cdigo de ejemplo en C#
*****************************
Introduccin
Cuando creamos un servicio Web XML con Visual Studio .NET, se crean dos
archivos principales que constituyen el servicio Web XML: el archivo .asmx y
el archivo .asmx.vb o .asmx.cs. El archivo .asmx identifica la pgina Web como
un servicio Web XML, y el archivo .asmx.vb o .asmx.cs, tambin denominado
pgina de cdigo subyacente, contiene la lgica del servicio Web XML.
Pgina .asmx
C#
@ Web Service
El atributo @ Web Service identifica el archivo como un servicio Web
XML.
Language
El atributo Language define el lenguaje en que est escrito el script de la
pgina Web. Algunos valores de este atributo son: vb, c# y JScript.
32
Codebehind
El atributo Codebehind identifica el nombre y la ubicacin de la pgina de
cdigo subyacente .asmx.vb o .asmx.cs que contiene la lgica del servicio
Web XML.
Class
El atributo Class identifica la clase base que soporta esta instancia de un
servicio Web XML.
En el archivo .asmx, debemos definir una clase que encapsule la
funcionalidad del servicio Web XML. Esta clase definida debera ser
pblica, y debera heredarse de la clase base del servicio Web XML.
La clase predeterminada del servicio Web XML es:
Class Service1
C#
class Service1
Pgina de cdigo
subyacente
Imports System.Web.Services
<WebService(Namespace := "http://tempuri.org/")> _
Public Class Service1
Inherits System.Web.Services.WebService
'<WebMethod()> Public Function HelloWorld() As String
'
HelloWorld = "Hello World"
' End Function
End Class
C#
using
using
using
using
using
using
using
33
System;
System.Collections;
System.ComponentModel;
System.Data;
System.Diagnostics;
System.Web;
System.Web.Services;
namespace Service1
{
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web
Services Designer
InitializeComponent();
}
//
//
//
//
//
}
}
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Espacios de nombres
Los servicios Web XML importan los espacios de nombres System y
System.Web.Services:
Imports System
El espacio de nombres ASP.NET System contiene las clases que
soportan las clases ASP.NET generales.
Imports System.Web.Services
El espacio de nombres ASP.NET Web.Services contiene los mtodos y
las clases de propiedades que soportan los servicios Web XML.
34
C#
Class
El atributo Class identifica la clase base que soporta esta instancia de un
servicio Web XML.
La clase predeterminada del servicio Web XML es Service1.
C#
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
35
*****************************
Introduccin
http://localhost/StocksVB
C#
http://localhost/StockCS.
Automticamente se crea una carpeta StocksVB o StocksCS en la carpeta
\Inetpub\wwwroot.
2. Abrir el archivo predeterminado .asmx, Service1.asmx, en vista de Cdigo
haciendo clic con el botn derecho sobre el archivo en el Explorador de
soluciones y clic en Ver cdigo.
Observar que el nombre predeterminado de la clase es Service1, y que
Visual Studio .NET ha abierto automticamente el archivo de cdigo
subyacente Sevice1.asmx.vb o Sevice1.asmx.cs.
36
C#
[WebMethod]
public string GetRating(String Ticker)
{
if (Ticker == "Contoso")
return "Buy";
else
return "Sell";
}
4. Guardar el archivo.
http://localhost/StocksVB/Service1.asmx.
C#
http://localhost/StocksCS/Service1.asmx.
Para abrir el servicio Web XML, tambin puede hacerse clic con el botn
derecho en Service1.asmx en el Explorador de soluciones y clic en Ver en
el navegador.
Observar que hay un comentario sobre el espacio de nombres.
6. Hacer clic en GetRating.
7. Escribir el nombre de una empresa para la que deseemos una
recomendacin de una cotizacin, como Contoso o Northwind Traders, en
el campo Ticker, y hacer clic en Invoke.
Cambiar o agregar el
espacio de nombres
C#
37
http://localhost/StocksVB/Service1.asmx.
C#
http://localhost/StocksCS/Service1.asmx.
Observar que desaparece el comentario sobre el espacio de nombres.
11. Agregar una descripcin para Class. El cdigo debera ser similar al
siguiente:
<WebService(Namespace:= _
"http://microsoft.com/webservices/", _
Description:="My class description...")> _
C#
[WebService(Namespace=
"http://microsoft.com/webservices/",
Description="My class description...")]
C#
http://localhost/StocksVB/Service1.asmx.
C#
http://localhost/StocksCS/Service1.asmx.
Verificar que aparecen las descripciones.