Está en la página 1de 39

ndice

Descripcin 1
Leccin: descripcin del uso de servicios Web XML 2
Leccin: invocar un servicio Web XML utilizando HTTP 11
Leccin: utilizar un proxy para invocar un servicio Web
XML 16
Leccin: crear un servicio Web XML 28

Crear y consumir
servicios Web XML
Crear y consumir servicios Web XML 1


Descripcin
Introduccin al uso de servicios Web XML
Invocar un servicio Web XML utilizando HTTP
Utilizar un proxypara invocar un servicio Web XML
Crear un servicio Web XML

*****************************
Internet ha contribuido a facilitar a las empresas una mejor comunicacin
interna y entre empresas proporcionando un rpido acceso a la informacin. Sin
embargo, la navegacin por pginas basadas en datos no responde
adecuadamente a las necesidades de negocio de muchas empresas. Satisfacera
mejor sus necesidades disponer de sitios Web programables que enlazaran
directamente organizaciones, aplicaciones y servicios. Este enlace directo entre
aplicaciones es el papel que desempean los servicios Web XML. Al enlazar
nuestras aplicaciones y sitios Web a servicios Web XML, tenemos la
oportunidad de expandir la funcionalidad que ofrece nuestro sitio Web a los
usuarios.
En este mdulo, estudiaremos cmo invocar un servicio Web XML
directamente con un navegador y mediante un proxy desde un formulario Web
Form. Tambin estudiaremos cmo crear y publicar servicios Web XML
utilizando MicrosoftVisual Studio .NET.
En este mdulo, aprenderemos a:
Describir la utilidad y el proceso existente tras la invocacin a un servicio
Web XML desde un formulario Web Form.
Invocar un Servicio Web XML directamente desde un navegador utilizando
Hypertext Transfer Protocol (HTTP).
Crear un proxy de referencia Web para el mtodo de un Servicio Web
XML, e invocar ese mtodo Web desde un formulario Web Form.
Utilizar las plantillas de Visual Studio .NET para crear un servicio Web
XML.

Introduccin
Objetivos
2 Crear y consumir servicios Web XML


Leccin: descripcin del uso de servicios Web XML
Ques un servicio Web XML?
Por quutilizar servicios Web XML?
Buscar un servicio Web XML
Multimedia: modelo de ejecucin del servicio Web XML

*****************************
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.
En esta leccin, aprenderemos a:
Explicar qu es un servicio Web XML.
Explicar por qu los servicios Web XML son importantes para los
desarrolladores de aplicaciones Web.
Describir cmo encontrar servicios Web XML existentes.
Identificar el proceso de integracin de servicios Web XML en sitios Web.

Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 3


Qu es un servicio Web XML?
Lgica programable accesible por protocolos Web
estndares
Permite a las aplicaciones enviar y recibir
informacin a travs de Internet
Independiente de lenguaje, protocolo y plataforma
Arquitectura sin estado
Puede ser asncrono
Basado en un estndar W3C desarrollado

*****************************
Los servicios Web XML se parecen a los componentes en la medida en que
representan una funcionalidad de caja negra que los desarrolladores pueden
utilizar para agregar caractersticas a un formulario Web Form, a aplicaciones
Microsoft Windows o incluso a otro servicio Web XML, sin preocuparse de
cmo est implementado el servicio de soporte.
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.
La conexin a un servicio Web XML puede escribirse en cualquier lenguaje
basado en Microsoft .NET. Gracias a esta flexibilidad, no es necesario aprender
un nuevo lenguaje cada vez que deseamos utilizar un servicio Web XML.
A diferencia de las tecnologas de componentes actuales, los servicios Web
XML no utilizan protocolos especficos para determinados modelos de objetos,
como el Modelo de Objetos de Componentes Distribuido (Distributed
Component Object Model, DCOM). Los servicios Web XML se comunican
utilizando protocolos Web y formatos de datos estndares, como HTTP, XML o
SOAP (Simple Object Access Protocol). Los servidores que soporten estos
estndares Web pueden acceder u hospedar servicios Web XML.
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.
Introduccin
Comunicacin
aplicacin a aplicacin a
travs de Internet
Independencia del
lenguaje
Independencia del
protocolo
Independencia de la
plataforma
4 Crear y consumir servicios Web XML


El modelo de servicios Web XML asume una arquitectura de servicios sin
estado. Las arquitecturas sin estado generalmente son ms escalables que las
arquitecturas con estado. Cada respuesta del servicio Web XML es un nuevo
objeto, con un nuevo estado. A menos que los servicios Web XML utilicen los
servicios de gestin de estado de Microsoft ASP.NET para mantener el estado
entre peticiones, el estado de la respuesta se pierde en el servidor del servicio
Web XML.
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.
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.

Para ms informacin sobre el estndar del servicio Web XML del W3C,
ver el sitio Web oficial de W3C en http://www.w3c.org.

Arquitectura sin estado
Asncrono
Basado en W3C
Nota
Crear y consumir servicios Web XML 5


Por qu utilizar los servicios Web XML?
Internet Internet
Servicio Web XML
meteorolgico
Servicio Web XML
meteorolgico
Servicio Web XML
tipo decambio
Servicio Web XML
tipo decambio
Seleccionar destino:
La previsin
meteorolgica es:
El tipo de cambio es:
El billete de avin slo cuesta:
Lluvia Lluvia
Redmond
$1.56
$1,999.98
Base dedatos de
precios debilletes
Base dedatos de
precios debilletes
Servicio Web XML
precio del billete
Servicio Web XML
precio del billete
Sitio de viajes
NorthwindTraders
Sitio de viajes
NorthwindTraders

*****************************
Los servicios Web XML permiten compartir la lgica y las capacidades de
programacin con numerosas aplicaciones Web y aplicaciones Windows, y con
aplicaciones que se ejecutan en otras plataformas. Pensemos en un servicio
Web XML como en un componente que puede exponer sus mtodos a travs de
la Web.
Los servicios Web XML se basan tambin en estndares del W3C. Los
servicios Web XML permiten adems el uso de protocolos Web estndares y
herramientas de soporte que estn disponibles en Visual Studio .NET. Con
Visual Studio .NET, es muy fcil desarrollar y consumir servicios Web XML.
Podemos imaginar un nmero infinito de servicios Web XML que podemos
utilizar para agregar caractersticas a nuestras aplicaciones Web. La siguiente
tabla muestra una lista de algunos de los servicios Web XML que pueden
utilizarse.
Servicio Web XML Caractersticas

Servicios de
autenticacin
Proporciona autenticacin de usuarios.
Por ejemplo, Microsoft Passport.
Informes
meteorolgicos
Proporciona informes meteorolgicos actualizados para
ubicaciones seleccionadas.
Por ejemplo, un sitio Web podra proporcionar previsiones
meteorolgicas locales para una determinada ciudad o rea
consumiendo un servicio Web XML sobre informacin
meteorolgica.
Tipos de cambio Proporciona el tipo de cambio actualizado para todas las
monedas.
Por ejemplo, un sitio Web de viajes podra proporcionar
tipos de cambio para posibles destinos de vacaciones
basndose en perfiles de usuario, consumiendo un servicio
Web XML sobre tipos de cambio.

Introduccin
Agregar servicios Web
XML a aplicaciones Web
6 Crear y consumir servicios Web XML


(continuacin)
Servicio Web XML Caractersticas

Precios de billetes de
avin
Proporciona precios de billetes actualizados de una o varias
lneas areas.
Por ejemplo, un sitio Web de viajes podra ofrecer
automticamente precios con descuento de las principales
lneas areas consumiendo un servicio Web XML sobre los
precios de billetes de avin.
Valores de cotizacin Proporciona valores de cotizacin actualizados.
Por ejemplo, una empresa podra publicar su propio valor de
cotizacin en su sitio Web mediante el consumo de un
servicio Web XML sobre valores burstiles.
Servicios para socios Proporciona a los socios del negocio la oportunidad de
acceder a nuestros servicios en su sitio Web.
Por ejemplo, los sitios Web de convenciones podran ofrecer
servicios de reservas de hotel.
Resumen de noticias Proporciona resmenes de noticias actualizados.
Por ejemplo, una empresa podra publicar titulares de
noticias sobre su mercado de negocio en su sitio Web
consumiendo un servicio Web XML sobre titulares de
noticias.
Seguimiento de pedidos Proporciona el estado de los pedidos vinculando los
sistemas existentes de gestin de recursos empresariales
(enterprise resource management, ERP) a sitios Web
internos y externos.
Por ejemplo, acoplar los resultados de las aplicaciones ERP
internas con los servicios Web XML de seguimiento de
pedidos de proveedores y empresas de transporte dara a los
clientes una visin completa del estado de sus pedidos.

La ilustracin anterior muestra un sitio Web hipottico que ofrece varias
utilidades basadas en servicios Web XML. En este escenario, el usuario
introduce el nombre de una ciudad de destino, y el formulario Web Form utiliza
este nombre como parmetro en las llamadas a varios servicios Web XML.
Desde la perspectiva del usuario, este es un sitio Web con muchas utilidades.
Desde la perspectiva del cdigo, el sitio Web es ms un interfaz grfico que
combina varios servicios Web XML de compaas no relacionadas.
Este sitio Web de una agencia de viajes, al utilizar servicios Web XML,
proporciona mltiples ventajas para el sitio Web consumidor y para los
distintos servicios Web XML:
Ventajas para el sitio Web:
Las aplicaciones a que las que la agencia de viajes tiene acceso no estn
limitadas por los conocimientos de programacin o disponibilidad del
desarrollador de la agencia.
La agencia de viajes no asume el alto coste de mantenimiento de
mantener actualizados datos, como los informes meteorolgicos o los
tipos de cambio.
Ejemplo de servicio Web
XML
Crear y consumir servicios Web XML 7


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.
Ventajas para los proveedores del servicio Web XML:
Crear las nuevas aplicaciones como servicios Web XML, y actualizar las
aplicaciones existentes utilizando servicios Web XML, proporciona varias
ventajas a los proveedores de servicios:
El proveedor del servicio Web XML puede ser capaz de cobrar al sitio
Web para poder utilizar el servicio.
Al ofrecer una aplicacin, como una calculadora de tipo de cambio,
como un servicio Web XML, un banco puede acceder a la base de
clientes de varias agencias de viajes.
El proveedor del servicio Web XML no debe asumir el alto coste de
desarrollo y de marketing un sitio Web para el pblico que desea viajar.
Debido a que los servicios Web XML utilizan Internet para
comunicarse, los proveedores de los servicios no necesitan costosas
conexiones dedicadas para ofrecer nuestro servicio.
Debido a que los servicios Web XML son independientes del lenguaje,
protocolo y plataforma, el servicio Web XML puede ser consumido por
diversas aplicaciones.

8 Crear y consumir servicios Web XML


Buscar un servicio Web XML
Publicar la URL del servicio Web
XML y su descripcin
.disco
.wsdl
Servicio Web
Proxy Proxy
Web
Form
UDDI
1
1 1 2
2 2
3
3 3
4
4 4
5
5 5
6
6 6
1
1 1
2
2 2
3
3 3
4
4 4
5
5 5
Descubrir el servicio Web XML
Localizar la URL del servicio Web XML
Leer la descripcin .wsdl
Vincular el servicio Web XML al proxy
Invocar el
servicio Web
XML desde el
formulario
Web Form
Mediante el
proxy
6
6 6

*****************************
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.
El proceso de encontrar y vincular a un servicio Web XML es el siguiente:
1. Los desarrolladores de servicios Web XML publican las descripciones y las
ubicaciones de sus servicios Web XML en un sitio Web UDDI (Universal
Description, Discovery, and Integration).
2. Consultamos el sitio Web UDDI para encontrar los servicios Web XML
disponibles que satisfacen nuestros requerimientos. El sitio Web UDDI
proporciona un listado de servicios Web XML que incluyen las URLs
(Uniform Resource Locators) del documento de archivo de descubrimiento
(DISCO) para los servicios Web XML.
3. Seleccionar un servicio Web XML y acceder al documento DISCO para
localizar la URL del servicio Web XML y las URLs relacionadas con el
documento del lenguaje de descripcin de servicios Web (Web Services
Description Language, WSDL).
4. Generar un objeto proxy a partir del documento WSDL.
Una clase proxy es un cdigo que tiene exactamente el mismo aspecto que
la clase que representa; sin embargo, la clase proxy no contiene ninguna
lgica de aplicacin. En lugar de ello, la clase proxy contiene la lgica de
enlace y del transporte. Un objeto proxy permite a un cliente acceder a un
servicio Web XML como si fuera un objeto COM local.
5. Utilizar el objeto proxy para vincular el servicio Web XML.
6. Invocar el servicio Web XML desde el formulario Web Form utilizando el
proxy.

Introduccin
Buscar un servicio Web
XML
Crear y consumir servicios Web XML 9


La especificacin UDDI define un modo de publicar y descubrir informacin
sobre servicios Web XML y las empresas que los suministran.
Las empresas registran individualmente la informacin sobre los servicios Web
XML que exponen para que otras empresas puedan a continuacin utilizarlos.
Una vez que los datos han sido registrados, estn disponibles libremente para
cualquier persona que necesite descubrir cuales son los servicios Web XML
que expone un determinado negocio.

Para ms informacin sobre UDDI, conectarse al sitio Web UDDI en
http://www.uddi.org o al sitio Web de proyectos UDDI de Microsoft en
http://uddi.microsoft.com.

Los archivos de descubrimiento (DISCO) se utilizan para agrupar servicios
comunes en un servidor Web. Los archivos de descubrimiento, .disco y
.vsdisco, son archivos basados en XML que contienen enlaces en forma de
URLs a recursos que proporcionan informacin de descubrimiento para un
servicio Web XML. Estos archivos permiten el descubrimiento programtico de
los servicios Web XML. Los siguientes ejemplos muestran la diferencia entre
los archivos estticos y dinmicos de descubrimiento:
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.

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.

UDDI
Nota
Archivos DISCO
Precaucin
10 Crear y consumir servicios Web XML


El siguiente cdigo muestra un ejemplo de un archivo .vsdisco:
<?xml version="1.0" encoding="utf-8" ?>
<dynamicDiscovery xmlns="urn:schemas-
dynamicdiscovery:disco.2000-03-17">
<exclude path="_vti_cnf" />
<exclude path="_vti_pvt" />
<exclude path="_vti_log" />
<exclude path="_vti_script" />
<exclude path="_vti_txt" />
<exclude path="Web References" />
</dynamicDiscovery>

Un archivo WSDL define la gramtica XML que se utiliza para la
comunicacin con un servicio Web XML. Visual Studio .NET utiliza el archivo
WSDL para generar objetos proxy y comunicar con un servicio Web XML.
Los archivos WSDL contienen la siguiente informacin sobre un servicio Web
XML:
Dnde encontrar la URL.
Los mtodos y propiedades del servicio Web XML.
Tipos de datos utilizados.
Protocolos de comunicacin.

Para ms informacin sobre los archivos DISCO y WSDL, ver
Descubrimiento de servicios Web XML en la documentacin deVisual
Studio .NET.

Archivos WSDL
Nota
Crear y consumir servicios Web XML 11


Leccin: invocar un servicio Web XML mediante HTTP
Cmo invocar un servicio Web XML mediante HTTP
Prctica: invocar un servicio Web XML mediante
HTTP

*****************************
En esta leccin, estudiaremos cmo acceder a un servicio Web XML
directamente desde un explorador utilizando HTTP Get. Los desarrolladores
utilizan normalmente este proceso, denominado de acceso directo, en tiempo de
diseo para identificar y probar los servicios Web XML. El acceso directo
permite visualizar los mtodos, propiedades y el resultado de un servicio Web
XML en un entorno amigable para el desarrollador.
En esta leccin, aprenderemos a:
Invocar un servicio Web XML con un explorador utilizando acceso directo
al protocolo HTTP-Get.
Identificar los mtodos Web que estn disponibles desde un servicio Web
XML.
Invocar mtodos Web desde un servicio Web XML utilizando acceso
directo al protocolo HTTP-Get, y visualizar la respuesta.

Introduccin
Objetivos de la leccin
12 Crear y consumir servicios Web XML


Cmo invocar un servicio Web XML utilizando HTTP
1. Ir a la URL del servicio Web XML
2. Seleccionar un
mtodo del
servicio
Web XML
3. Invocar el
mtodo del
servicio
Web XML
4. Ver la respuesta
XML
1
1 1
2
2 2
3
3 3
4
4 4

*****************************
Cuando accedemos a un servicio Web XML directamente con un navegador,
accedemos en primer lugar a la pgina de descripcin HTML,
DefaultWsdlHelpGenerator.aspx. Desde esta pgina, podemos seleccionar entre
los mtodos del servicio Web XML disponibles e invocar un mtodo con
parmetros. Recibiremos una respuesta en formato XML.
Tambin podemos utilizar el protocolo HTTP-Post para acceder a un servicio
Web XML. No accederemos a la pgina predeterminada,
DefaultWsdlHelpGenerator.aspx; sin embargo, la respuesta final del servicio
Web XML ser idntica a una peticin HTTP-Get.
Tras haber encontrado un servicio Web XML en UDDI, utilizamos la URL
.asmx para navegar a la pgina de descripcin HTML. Esta pgina de
descripcin proporciona informacin sobre el propsito de un servicio Web
XML, los mtodos Web disponibles que contiene, los parmetros del mtodo
Web, y las respuestas. Adems, podemos utilizar la pgina de descripcin
HTML para probar la funcionalidad del servicio Web XML.
La siguiente ilustracin muestra la vista del navegador con un servicio Web
XML Stocks que se utilizar en las demostraciones de este mdulo.

Introduccin
Navegar hasta la URL
del servicio Web XML
Crear y consumir servicios Web XML 13


Cuando accedemos a la pgina de descripcin HTML de un servicio Web
XML, el navegador muestra los mtodos disponibles del servicio Web XML.
Podemos hacer clic en un mtodo Web para visualizar los parmetros
disponibles para ese mtodo Web.
La siguiente ilustracin muestra la vista del navegador resultante de la seleccin
del mtodo Web GetRating en el servicio Web XML Stocks.

Tambin podemos hacer clic en el enlace Service Description de la parte
superior de la pgina de descripcin HTML para ver el contrato WSDL, que
contiene una descripcin XML del servicio Web XML y su contenido.
Para invocar un mtodo Web, rellenamos el formulario y hacemos clic en
Invoke. El formulario Web Form pasa el nombre del mtodo, los parmetros
requeridos y los valores de los parmetros a la URL del servicio Web XML.
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.

Seleccionar un mtodo
del servicio Web XML
Invocar el mtodo Web
Ver la respuesta XML
14 Crear y consumir servicios Web XML


Prctica: invocar un servicio Web XML utilizando HTTP
Los estudiantes:
Introducirn la URL de un servicio Web
XML en el equipo del instructor
Seleccionarn el mtodo del servicio Web
XML para invocar
Introducirn valores para los parmetros
Visualizarn el XML devuelto
Tiempo: 5 Minutos

*****************************
En esta prctica, accederemos a un servicio Web XML en el equipo del
instructor y probaremos los tres mtodos Web disponibles.
Acceder a este servicio Web XML
1. Abrir http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx en un
navegador.
2. Hacer clic en WeatherByCity.
3. En el campo City, escribir el nombre de una ciudad, como Seattle, de la que
deseemos conocer la prediccin meteorolgica de maana.
4. Hacer clic en Invoke.
Introducir la respuesta XML en las siguientes lneas.

_____________________________________________________________
_____________________________________________________________
5. Invocar de nuevo el mtodo Web WeatherByCity, esta vez pasando otro
nombre de ciudad, como London, como parmetro en el campo City.
Observar la respuesta XML.
Observar tambin que con nombres de ciudades distintos de Seattle, se
recibe una previsin meteorolgica aleatoria de sol, nublado, o lluvia.
Cuando se introduce Seattle en el campo City, siempre se recibe la
previsin meteorolgica de sol.
Introduccin
Invocar el mtodo Web
WeatherByCity
Crear y consumir servicios Web XML 15


6. Regresar a la pgina preliminar
http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx.
7. Hacer clic en TemperatureByCity.
8. En el campo City, introducir el nombre de una ciudad de la que se desee
conocer la temperatura actual.
9. Hacer clic en Invoke.
El valor resultado debera ser un valor aleatorio entre 31 y 60 grados
Fahrenheit.
10. Regresar a la pgina preliminar
http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx.
11. Hacer clic en TravelAdviceByCity.
12. En el campo City, introducir el nombre de una ciudad, como Seattle, para la
que se desee obtener sugerencias sobre el viaje.
13. Hacer clic en Invoke.
Observar la respuesta XML.
14. Invocar de nuevo el mtodo Web TravelAdviceByCity, esta vez el nombre
de otra ciudad, como London, como parmetro en el campo City.
15. Observar la respuesta XML.

Invocar el mtodo Web
TemperatureByCity
Invocar el mtodo Web
TravelAdviceByCity
16 Crear y consumir servicios Web XML


Leccin: utilizar un proxy para invocar un servicio Web
XML
Utilizar proxiespara invocar servicios Web XML
Cmo utilizar un proxypara invocar un servicio Web
XML
Prctica dirigida por el instructor: utilizar un proxy
para invocar un servicio Web XML
Controlador de errores del servicio Web XML
Demostracin: probar la disponibilidad de un servicio
Web XML

*****************************
Para invocar programticamente un servicio Web XML desde un formulario
Web Form, debemos crear un proxy para controlar la invocacin. En esta
leccin, estudiaremos cmo crear un proxy de referencia Web para un mtodo
de un servicio Web XML, y cmo invocar el mtodo Web desde un formulario
Web Form.
En esta leccin, aprenderemos a:
Explicar el modo en que un proxy invoca un servicio Web XML.
Crear un proxy para invocar un servicio Web XML.
Incorporar el contenido de un servicio Web XML en un sitio Web.
Gestionar los errores de un servicio Web XML.
Probar la disponibilidad de un servicio Web XML.

Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 17


Utilizar proxies para invocar servicios Web XML
Parecen idnticos que la clase original, pero no
contienen la lgica de la aplicacin
Utilizan SOAP para interactuar con el servicio Web XML
Se crean desde el archivo NombreServicio.asmx.wsdl
Agregan miembros para gestionar interacciones con el
servicio Web XML o soportar llamadas asncronas
Internet Internet Servicio
Web XML
Servicio
Web XML
Proxy Proxy
Web
Form
SOAP

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

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:
Introduccin
Qu es un proxy?
Interactuar con SOAP
Nota
18 Crear y consumir servicios Web XML


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetRating xmlns="http://tempuri.org/">
<Ticker>Contoso</Ticker>
</GetRating>
</soap:Body>
</soap:Envelope>

3. El servicio Web XML enva una respuesta al proxy utilizando SOAP.
La siguiente es la respuesta SOAP del servicio Web XML GetRating:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetRatingResponse xmlns="http://tempuri.org/">
<GetRatingResult>Buy</GetRatingResult>
</GetRatingResponse>
</soap:Body>
</soap:Envelope>

4. El formulario Web Form ASP.NET consume la respuesta del servicio Web
XML.

Visual Studio .NET crea automticamente un proxy cuando seleccionamos
Agregar referencia Web en el men Proyecto e introducimos la URL del
servicio Web XML. El archivo .asmx.wsdl en el servidor del servicio Web
XML se utiliza para identificar los mtodos y parmetros Web disponibles en el
servicio Web XML.
Creado desde el archivo
.asmx.wsdl
Crear y consumir servicios Web XML 19


Cuando creamos un proxy utilizando Visual Studio .NET, hay disponibles
varios mtodos y propiedades que soportan un acceso programtico al servicio
Web XML. Los miembros disponibles para el proxy incluyen:
Miembros creados dentro del proxy
La infraestructura para realizar llamadas asncronas desde un formulario
Web Form a un servicio Web XML est generada en la clase proxy que
Visual Studio .NET crea automticamente cuando agregamos una referencia
Web. Por cada mtodo Web del servicio Web XML, se crea
automticamente un mtodo BeginNombreMtodoWeb y un mtodo
EndNombreMtodoWeb en el proxy:
BeginNombreMtodoWeb
El mtodo Begin se utiliza para iniciar la comunicacin asncrona con el
mtodo NombreMtodoWeb de un servicio Web XML.
EndNombreMtodoWeb
El mtodo End se utiliza para finalizar una comunicacin asncrona con
el mtodo NombreMtodoWeb de un servicio Web XML, y recuperar la
respuesta completa del mtodo del servicio Web XML.
Por ejemplo, crear una referencia Web al servicio Web XML Stocks crea un
proxy con dos mtodos adicionales: BeginGetRating y EndGetRating.

Para ms informacin sobre la invocacin asncrona de un servicio
Web XML, ver Comunicacin con servicios Web XML de modo
asncrona, en la documentacin de Visual Studio .NET.

Miembros heredados deSoapHttpClientProtocol
Un proxy hereda varios mtodos y propiedades de la clase
System.Web.Services.Protocols.SoapHttpClientProtocol que pueden ser
utilizados para gestionar las interacciones con el servicio Web XML.
Algunas de las propiedades del proxy incluyen:
Timeout
La propiedad Timeout indica la cantidad de tiempo, en milisegundos,
que un cliente de un servicio Web XML espera para que se complete la
solicitud de un servicio Web XML sncrono.
Url
La propiedad Url obtiene o establece la URL base del servicio Web
XML que el cliente est solicitando.

Para ms informacin sobre los miembros SoapHttpClientProtocol,
ver SoapHttpClientProtocol (Miembros de), en la documentacin de
Visual Studio .NET.


Agregar miembros para
gestionar las
interacciones con el
servicio Web XML y
soportar llamadas
asncronas
Nota
Note
20 Crear y consumir servicios Web XML


Cmo utilizar un proxy para invocar un servicio Web XML
1. Crear una referencia Web para el servicio Web XML
2. Crear una instancia del servicio Web XML
3. Invocar los mtodos Web del servicio Web XML
4. Generar la aplicacin Web ASP.NET
Sub Button1_Click(s As Object, e As EventArgs)...
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = _
ProxyGetStocks.GetRating("Contoso")
End Sub
Sub Button1_Click(s As Object, e As EventArgs)...
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = _
ProxyGetStocks.GetRating("Contoso")
End Sub
1
1 1
2
2 2
3
3 3
4
4 4
Cdigo de ejemplo enC#

*****************************
Para utilizar el servicio Web XML de un formulario Web Form creado en
Visual Studio .NET, debemos identificar antes la URL del servicio Web XML,
y crear una referencia Web.
Crear un proxy para invocar un servicio Web XML en un formulario
Web Form
1. Abrir la aplicacin Web y el formulario Web Form desde el que
invocaremos el servicio Web XML, y crear una referencia Web para el
servicio Web XML:
a. En el men Proyecto, hacer clic en Agregar referencia Web.
b. En el campo Direccin del cuadro de dilogo Agregar referencia Web,
escribir la URL del servicio Web XML al que se est accediendo, pulsar
ENTER, y hacer clic en Agregar referencia.
Visual Studio .NET crea una referencia Web al servicio Web XML, con
el nombre del servidor que hospeda el servicio Web XML.
Por ejemplo, si creamos una referencia Web a
http://localhost/Stocks/Service1.asmx, de forma predeterminada Visual
Studio .NET pondr el nombre localhost a la referencia Web.

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.

Introduccin
Nota
Crear y consumir servicios Web XML 21


2. En un procedimiento de evento del formulario Web Form, crear una
instancia del proxy del servicio Web XML.
Por ejemplo, si un botn invoca el mtodo GetRating del servicio Web
XML Stocks, utilizar el siguiente cdigo en el procedimiento de evento
Click GetStocks.localhost.Service1:
Dim ProxyGetStocks As New GetStocks.localhost.Service1()

GetStocks.localhost.Service1 ProxyGetStocks =
new GetStocks.localhost.Service1();

GetStocks es el nombre de la aplicacin Web, localhost es el nombre de la
referencia Web, y Service1 el nombre del servicio Web.
3. Invocar los mtodos Web del servicio Web XML:
Label1.Text = ProxyGetStocks.GetRating("Contoso")

Label1.Text = ProxyGetStocks.GetRating("Contoso");

El cdigo completo en un procedimiento de evento button_Click sera
similar al siguiente:
Sub Button1_Click(s As Object, e As EventArgs) _
Handles Button1.Click
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = ProxyGetStocks.GetRating("Contoso")
End Sub

private void Button1_Click(object sender,
System.EventArgs e)
{
GetStocks.localhost.Service1 ProxyGetStocks = new
GetStocks.localhost.Service1();
lblResults.Text = ProxyGetStocks.GetRating("Contoso");
}

4. Generar el proyecto de aplicacin Web ASP.NET.
Compilar la aplicacin Web haciendo clic en Generar en el men Generar.

Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#
22 Crear y consumir servicios Web XML


Prctica dirigida por el instructor: utilizar un proxy para invocar un
servicio Web XML
Crear un nuevo proyecto de aplicacin Web
ASP.NET
Crear un proxy para un servicio Web XML
Probar con un navegador
Visualizar el archivo reference.vb o
reference.cs

*****************************
En esta prctica, utilizaremos un proxy para invocar un servicio Web XML.
Ejecutar la prctica dirigida por el instructor
1. Crear un nuevo proyecto de aplicacin Web ASP.NET denominado
GetWeatherVB o GetWeatherCS en Visual Studio .NET.
2. Agregar una referencia Web al servicio Web XML ubicado en
http://localhost/Mod13VB/WeatherService.asmx o
http://localhost/Mod13CS/WeatherService.asmx.
La referencia Web que estamos agregando crear un proxy y una nueva
referencia Web denominada localhost en el Explorador de soluciones.
Observar que el proxy se crea en el lenguaje de nuestro proyecto. Por
ejemplo, si se est utilizando Microsoft Visual Basic, el proxy se crear en
Visual Basic.
3. En el Explorador de soluciones, visualizar los archivos creados
automticamente por Visual Studio .NET.
4. Cambiar el nombre de la referencia Web en el Explorador de soluciones por
WeatherWebRef.
5. Abrir la pgina predeterminada Webform1.aspx en vista de Diseo y
agregar un control Text Box, un control Button y un control Label al
formulario Web Form. Conservar las propiedades predeterminadas de cada
control.
Introduccin
Crear un nuevo proyecto
Crear un proxy
Crear y consumir servicios Web XML 23


6. Crear un procedimiento de evento Click para el botn Button1 y agregar el
siguiente cdigo:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
End Sub

private void Button1_Click(object sender,
System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}

7. Generar y examinar Webform1.aspx.
8. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botn. A continuacin, escribir en el cuadro de texto el
nombre de otra ciudad, como London, y hacer clic de nuevo en el botn.
Si se introduce Seattle la previsin meteorolgica ser sol.
Si se introduce el nombre de otra ciudad, el resultado de la previsin
meteorolgica ser aleatorio: sol, nublado o lluvia.
9. Visualizar el archivo reference.vb o reference.cs. El archivo Reference.vb o
Reference.cs puede encontrarse haciendo clic en Mostrar todos los
archivos en el Explorador de soluciones y expandiendo Referencias Web,
WeatherWebRef, y Reference map.
Observar que el archivo de referencia es el cdigo fuente del proxy que
Visual Studio .NET ha generado automticamente. El proxy tiene mtodos
Begin y End para la invocacin asncrona de cada mtodo Web del servicio
Web XML.

Visual Basic .NET
C#
Probar con un
explorador
Visualizar el archivo de
referencia
24 Crear y consumir servicios Web XML


Control de errores del servicio Web XML
Servicio no disponible
Excepciones SOAP de servicios Web XML
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout = 10000;
try
{
lblMessage.Text =
ProxyGetStocks.GetRating(TextBox1.Text);
}
catch (Exception err)
{
lblMessage.Text = err.Message;
}
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout = 10000;
try
{
lblMessage.Text =
ProxyGetStocks.GetRating(TextBox1.Text);
}
catch (Exception err)
{
lblMessage.Text = err.Message;
}
Cdigo de ejemplo en Visual Basic .NET

*****************************
Existen tres fuentes principales de errores cuando se utiliza un servicio Web
XML: servicio no disponible, largos retrasos de respuesta y errores internos del
servicio Web XML, produciendo mensajes de error del servicio en forma de
excepciones SOAP. Nuestro formulario Web Form necesita ser capaz de
identificar y gestionar los tres tipos de errores.
Para probar la disponibilidad de un servicio Web XML desde un formulario
Web Form ASP.NET, debemos establecer un tiempo de espera para el proxy
del servicio Web XML. Debemos utilizar una instruccin
TryCatchFinally para gestionar la excepcin del tiempo de espera:
Establecer el parmetro del tiempo de espera en el proxy
Establecer la propiedad Timeout del proxy del servicio Web XML a un
valor en milisegundos, como muestra el siguiente cdigo:
ProxyName.Timeout = valor en milisegundos

Controlar las excepciones del tiempo de espera
El siguiente cdigo invoca el servicio Web XML, captura cualquier
excepcin y muestra un mensaje de error en Label1:
Try
'call the XML Web service
Catch err As Exception
Label1.Text = err.Message
End Try

Introduccin
Servicio Web XML no
disponible
Visual Basic .NET
Crear y consumir servicios Web XML 25


try
{
//call the XML Web service
}
catch (Exception err)
{
Label1.Text = err.Message;
}


Si un servicio Web XML no puede procesar una peticin, puede devolver un
mensaje de error utilizando una instancia del objeto SoapException de la clase
System.Web.Services. Para controlar estas excepciones, necesitamos utilizar
una instruccin TryCatchFinally.
El siguiente cdigo captura la excepcin y muestra un mensaje de error en
Label1:
Try
'call your XML Web service
Catch err As SoapException
Label1.Text = "Unable to process your request"
End Try

try
{
//call your XML Web service
}
catch (SoapException err)
{
Label1.Text = "Unable to process your request";
}

C#
Excepciones SOAP de
servicios Web XML
Visual Basic .NET
C#
26 Crear y consumir servicios Web XML


Demostracin: probar la disponibilidad de un servicio Web XML
Establecer una instruccin TryCatch para
elcontrol de errores del tiempo de espera
Ralentizar el servicio Web
Evaluar la excepcin

*****************************
En esta demostracin, estudiaremos cmo probar si el servicio Web XML est
disponible.
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:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
ProxyGetWeather.Timeout = 10000
Try
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
Catch err As Exception
Label1.Text = err.Message
End Try
End Sub

Introduccin
Visual Basic .NET
Crear y consumir servicios Web XML 27


private void Button1_Click(object sender,
System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
ProxyGetWeather.Timeout = 10000;
try
{
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}

4. Generar y examinar WebForm1.aspx.
5. Probar el servicio Web XML introduciendo Seattle en el cuadro de texto y
haciendo clic en el botn para verificar que la aplicacin sigue funcionando
como antes.
6. Abrir el proyecto Mod13 de la solucin 2310Demos que contiene el
servicio Web XML.
7. En la parte superior de la pgina WeatherService.asmx.vb o
WeatherService.asmx.cs, agregar la siguiente instruccin de importacin:
Imports System.Threading

using System.Threading;

8. En la parte inicial del mtodo Web WeatherByCity, agregar el siguiente
cdigo para retrasar la respuesta a 40 segundos:
Thread.Sleep(40000)

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.
9. Generar la aplicacin Web haciendo clic con el botn derecho Mod13VB o
Mod13CS en el Explorador de soluciones, y hacer clic en Generar.
10. En el proyecto GetWeather, visualizar la pgina WebForm1.aspx en el
navegador.
11. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botn.
Transcurridos 10 segundos, debera aparecer el mensaje en la etiqueta The
operation has timed-out.

C#
Ralentizar el servicio
Web XML
Visual Basic .NET
C#
Visual Basic .NET
C#
Probar la excepcin
28 Crear y consumir servicios Web XML


Leccin: crear un servicio Web XML
Cmo crear un servicio Web XML
Cdigo del servicio Web XML
Prctica dirigida por el instructor: crear un servicio
Web XML

*****************************
Visual Studio .NET proporciona plantillas que facilitan el desarrollo de los
servicios Web XML. En esta leccin, estudiaremos cmo utilizar estas
plantillas para crear un servicio Web XML.
En esta leccin, aprenderemos a:
Crear un servicio Web XML utilizando Visual Studio .NET.
Describir las clases y las estructuras que se utilizan en un proyecto de un
servicio Web XML generado mediante ASP.NET.
Explicar el cdigo generado cuando se crea un nuevo proyecto de servicio
Web XML utilizando ASP.NET.

Introduccin
Objetivos de la leccin
Crear y consumir servicios Web XML 29


Cmo crear un servicio Web XML
1. Crear un nuevo proyecto de servicio Web
XML en Visual Studio .NET
2. Declarar las funciones WebMethod
3. Generar el proyecto de servicio Web XML
4. Probar
con un
navegador
1
1 1
2
2 2
3
3 3
4
4 4

*****************************
Visual Studio .NET proporciona plantillas y un mtodo de servicio Web XML
predeterminado que nos sirven de ayuda para iniciar la creacin de servicios
Web XML.
Crear un servicio Web XML en Visual Studio .NET
1. Abrir Visual Studio .NET, y crear un nuevo proyecto de servicio Web
ASP.NET.
Visual Studio .NET crear automticamente las carpetas necesarias, y la
pgina del servicio Web XML. Se recomienda cambiar el nombre del
proyecto y del servicio Web XML como ayuda para identificar y mantener
el proyecto y los archivos.
2. Declarar las funciones que se invocarn a travs del Web.
Visual Studio .NET crea una funcin predeterminada Hello World en la
pgina del servicio Web XML. La funcin puede activarse eliminando las
etiquetas de comentario.
Casi cualquier tipo de funcin puede ser escrita como una funcin de
mtodos de un servicio Web XML, desde un sencillo clculo local a una
compleja consulta a una base de datos.
3. Generar el proyecto del servicio Web ASP.NET.
Una vez escritas las funciones, se debe generar el servicio Web para poder
probar la lgica. Al igual que los formularios Web Forms, ASP.NET
compila el servicio Web XML en Microsoft Intermediate Language (MSIL)
para su posterior ejecucin.
Introduccin
30 Crear y consumir servicios Web XML


4. Probar con un navegador.
Para verificar que las funciones funcionan correctamente, pueden probarse
accediendo al servicio Web XML directamente con un navegador. Para ello,
en Visual Studio .NET, hacer clic con el botn derecho en Servicio Web
XML en el Explorador de soluciones y clic en Ver en el navegador.
Tambin puede probarse el servicio Web XML con un navegador remoto,
desde Visual Studio .NET, haciendo clic con el botn derecho en Servicio
Web XML en el Explorador de soluciones y clic en Examinar con, o
abriendo el navegador e introduciendo la URL del servicio Web:
http://NombreServidor/WebService1/Service1.asmx


Crear y consumir servicios Web XML 31


Cdigo del servicio Web XML
Pgina .asmx
Pgina .asmx.vb
<%@ WebService Language="vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
<%@ WebService Language="vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
Imports System
Imports System.Web.Services
Class Service1
<WebMethod()> Public Function function1() As type
'function_here
End Function
End Class
Imports System
Imports System.Web.Services
Class Service1
<WebMethod()> Public Function function1() As type
'function_here
End Function
End Class
Cdigo de ejemplo en C#

*****************************
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.
Como un servicio Web XML no tiene ninguna interfaz de usuario, la pgina
.asmx nicamente contiene informacin del tipo de archivo y una directiva a la
pgina de cdigo subyacente.
El cdigo de una pgina .asmx es como sigue:
<%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>

<%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
Class="XMLWebServiceName.Service1" %>

Las pginas .asmx tienen los siguientes atributos:
@ 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

.
Introduccin
Pgina .asmx
Visual Basic .NET
C#
32 Crear y consumir servicios Web XML


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

class Service1


El archivo de cdigo subyacente es la pgina que contiene la lgica del servicio
Web XML.
El cdigo predeterminado de una pgina de cdigo subyacente es:
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

Visual Basic .NET
C#
Pgina de cdigo
subyacente
Visual Basic .NET
Crear y consumir servicios Web XML 33


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using 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";
// }
}
}

Las pginas de cdigo subyacente tienen los siguientes atributos:
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.
C#
Visual Basic .NET
34 Crear y consumir servicios Web XML


Los servicios Web XML importan los espacios de nombres System y
System.Web.Services:
using System
El espacio de nombres ASP.NET System contiene las clases que
soportan las clases ASP.NET generales.
using System.Web.Services
El espacio de nombres ASP.NET Web.Services contiene los mtodos y
clases de propiedades que soportan los servicios Web XML.
using System.Collections
using System.ComponentModel
using System.Data
using System.Diagnostics
using System.Web
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.
Mtodos del servicio Web XML
Cada mtodo que se exponga desde el servicio Web XML debe estar
marcado con un atributo <WebMethod()> personalizado. Este atributo se
requiere para crear un mtodo que pueda ser invocado a travs del Web. Si
el mtodo no tiene el atributo personalizado <WebMethod()>, el mtodo no
ser expuesto desde el servicio Web XML.
Visual Studio .NET crea un mtodo Web "Hello World" predeterminado,
que puede activarse eliminando las etiquetas comentadas en la pgina del
servicio Web XML. Podemos modificar la funcin predeterminada, o
agregar nuestras propias funciones.
El siguiente cdigo es el mtodo predeterminado del servicio Web XML de
Visual Studio .NET:
<WebMethod()> Public Function HelloWorld() As String
HelloWorld = "Hello World"
End Function

[WebMethod]
public string HelloWorld()
{
return "Hello World";
}


C#
Visual Basic .NET
C#
Crear y consumir servicios Web XML 35


Prctica dirigida por el instructor: crear un servicio Web XML
Crear un servicio Web XML
Probar el servicio Web XML
Cambiar el espacio de nombres

*****************************
En esta prctica, crearemos un sencillo servicio de recomendaciones de valores
de mercado. Este servicio de recomendaciones devuelve un valor Buy si se
introduce el nombre de la compaa Contoso como parmetro de entrada. El
resto de nombres de compaas deberan devolver un valor Sell.
Ejecutar esta prctica
1. Crear un nuevo proyecto de servicio Web ASP.NET en Visual Studio .NET
y especificar la ubicacin del servicio Web en
http://localhost/StocksVB
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.
Introduccin
Crear un servicio Web
XML
Visual Basic .NET
C#
36 Crear y consumir servicios Web XML


3. Crear una funcin GetRating como sigue:
<WebMethod()> Public Function GetRating( _
ByVal Ticker As String) As String
If Ticker ="Contoso" Then
Return "Buy"
Else
Return "Sell"
End If
End Function

[WebMethod]
public string GetRating(String Ticker)
{
if (Ticker == "Contoso")
return "Buy";
else
return "Sell";
}

4. Guardar el archivo.
5. Generar y examinar el servicio Web XML en Microsoft Internet Explorer
visualizando
http://localhost/StocksVB/Service1.asmx.
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.
Para evitar que aparezca el comentario sobre el espacio de nombres cuando
se examina el servicio Web XML, debe cambiarse la URL del espacio de
nombres. Si se est utilizando Visual Basic .NET, cambiar la URL
predeterminada que proporciona Visual Studio .NET. Si se est utilizando
C#, Visual Studio .NET no genera un espacio de nombres predeterminado.
Debemos agregar un atributo WebService y agregarle la directiva del
espacio de nombres.
8. Agregar o modificar el atributo WebService.
Modificar la directiva del espacio de nombres en Sevice1.asmx.vb para que
utilice http://microsoft.com/webservices/:
<WebService(Namespace:= _
"http://microsoft.com/webservices/")> _

Agregar el atributo WebService y la directiva del espacio de nombres
debajo de la informacin de resumen en Service1.asmx.cs.
El cdigo C#debera ser como el siguiente (con el cdigo nuevo que debe
aadirse en negrita):
Visual Basic .NET
C#
Probar el servicio Web
XML
Visual Basic .NET
C#
Cambiar o agregar el
espacio de nombres
Visual Basic .NET
C#
Crear y consumir servicios Web XML 37


/// Summary description for WeatherService
/// </summary>
///
[WebService(Namespace="http://microsoft.com/webservices/")]
public class Service1 : System.Web.Services.WebService

9. Guardar y volver a generar el archivo.
10. Examinar el servicio Web en Internet Explorer visualizando
http://localhost/StocksVB/Service1.asmx.
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...")> _

[WebService(Namespace=
"http://microsoft.com/webservices/",
Description="My class description...")]

12. Agregar una descripcin a la directivaWebMethod. El cdigo debera ser
similar al siguiente:
<WebMethod(Description:="My WebMethod description...")>

[WebMethod(Description="My WebMethod description...")]

13. Guardar y volver a generar el archivo.
14. Examinar el servicio Web en Internet Explorer en
http://localhost/StocksVB/Service1.asmx.
http://localhost/StocksCS/Service1.asmx.
Verificar que aparecen las descripciones.
Visual Basic .NET
C#
Agregar una descripcin
para la clase y el mtodo
Web
Visual Basic .NET
C#
Visual Basic .NET
C#
Visual Basic .NET
C#

También podría gustarte