Artículo Iluminación y color para el diseño de espacios interiores por Oriett...
Servicios web xml
1. Crear y consumir
servicios Web XML
Índice
Descripción 1
Lección: descripción del uso de servicios Web XML 2
Lección: invocar un servicio Web XML utilizando HTTP 11
Lección: utilizar un proxy para invocar un servicio Web
XML 16
Lección: crear un servicio Web XML 28
3. Crear y consumir servicios Web XML 1
Descripción
Introducción al uso de servicios Web XML
Invocar un servicio Web XML utilizando HTTP
Utilizar un proxy para invocar un servicio Web XML
Crear un servicio Web XML
*****************************
Introducción Internet ha contribuido a facilitar a las empresas una mejor comunicación
interna y entre empresas proporcionando un rápido acceso a la información. Sin
embargo, la navegación por páginas basadas en datos no responde
adecuadamente a las necesidades de negocio de muchas empresas. Satisfacería
mejor sus necesidades disponer de sitios Web programables que enlazaran
directamente organizaciones, aplicaciones y servicios. Este enlace directo entre
aplicaciones es el papel que desempeñan 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 módulo, estudiaremos cómo invocar un servicio Web XML
directamente con un navegador y mediante un proxy desde un formulario Web
Form. También estudiaremos cómo crear y publicar servicios Web XML
utilizando Microsoft® Visual Studio® .NET.
Objetivos En este módulo, aprenderemos a:
Describir la utilidad y el proceso existente tras la invocación 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 método de un Servicio Web
XML, e invocar ese método Web desde un formulario Web Form.
Utilizar las plantillas de Visual Studio .NET para crear un servicio Web
XML.
4. 2 Crear y consumir servicios Web XML
Lección: descripción del uso de servicios Web XML
¿Qué es un servicio Web XML?
¿Por qué utilizar servicios Web XML?
Buscar un servicio Web XML
Multimedia: modelo de ejecución del servicio Web XML
*****************************
Introducción Uno de los retos con los que podemos enfrentarnos en la creación de sitios Web
con rica funcionalidad es la integración de aplicaciones. A menudo,
necesitamos combinar varias aplicaciones para formar una solución única y
fácil de utilizar. El problema de intentar conseguir una solución de este tipo es
que las aplicaciones que necesitamos combinar pueden encontrarse en distintas
plataformas, cada una ejecutando un sistema operativo distinto. Además, es
posible que las aplicaciones se hayan creado en diferentes lenguajes de
programación.
Los servicios Web XML proporcionan un modelo simple, flexible y basado en
estándares para conectar aplicaciones a través de Internet. Los servicios Web
XML nos permiten aprovechar la infraestructura existente en Internet, y enlazar
aplicaciones, con independencia de las plataformas, lenguajes de programación
o modelos de objetos que se hayan utilizado para implementarlas.
En esta lección, estudiaremos la utilidad y el proceso que existe tras invocar un
servicio Web XML desde un formulario Web Form.
Objetivos de la lección En esta lección, 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 cómo encontrar servicios Web XML existentes.
Identificar el proceso de integración de servicios Web XML en sitios Web.
5. Crear y consumir servicios Web XML 3
¿Qué es un servicio Web XML?
Lógica programable accesible por protocolos Web
estándares
Permite a las aplicaciones enviar y recibir
información a través de Internet
Independiente de lenguaje, protocolo y plataforma
Arquitectura sin estado
Puede ser asíncrono
Basado en un estándar W3C desarrollado
*****************************
Introducción 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 características a un formulario Web Form, a aplicaciones
Microsoft Windows® o incluso a otro servicio Web XML, sin preocuparse de
cómo esté implementado el servicio de soporte.
Comunicación Los servicios Web XML están diseñados para interactuar directamente con
aplicación a aplicación a otras aplicaciones a través de Internet. En consecuencia, los servicios Web
través de Internet XML no tienen interfaz de usuario (IU), sino que proporcionan interfaces
definidos por estándares denominados contratos que describen los servicios que
proporcionan.
Un servicio Web XML puede ser utilizado internamente por una sola aplicación
o externamente por muchas aplicaciones accediendo a él a través de Internet.
Independencia del La conexión a un servicio Web XML puede escribirse en cualquier lenguaje
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.
Independencia del A diferencia de las tecnologías de componentes actuales, los servicios Web
protocolo XML no utilizan protocolos específicos 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 estándares, como HTTP, XML o
SOAP (Simple Object Access Protocol). Los servidores que soporten estos
estándares Web pueden acceder u hospedar servicios Web XML.
Independencia de la Es posible acceder a los servicios Web XML mediante una interfaz estándar, lo
plataforma cual permite que sistemas distintos puedan trabajar juntos. Los servidores que
pueden soportar formularios Web Form también pueden soportar servicios Web
XML.
6. 4 Crear y consumir servicios Web XML
Arquitectura sin estado El modelo de servicios Web XML asume una arquitectura de servicios sin
estado. Las arquitecturas sin estado generalmente son más 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 gestión 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.
Asíncrono Los servicios Web XML son asíncronos, ya que el objeto que realiza la petición
en la aplicación cliente y el objeto de respuesta del servicio Web XML son
sobres SOAP únicos que no requieren una conexión compartida. Las
interacciones entre la aplicación cliente y el servicio Web XML pueden ser
posteriormente divididas en una petición y respuesta inicial para invocar el
método del servicio Web XML, y una segunda petición para recoger los
resultados. Esta comunicación asíncrona permite tanto a la aplicación que
realiza la petición como al servicio Web XML la oportunidad de seguir
procesándose mientras la interacción está en funcionamiento.
Basado en W3C Los servicios Web XML están basados en un estándar del World Wide Web
Consortium (W3C) que sigue evolucionando. De tal modo, las características
genéricas de los servicios Web XML están fijadas; sin embargo, pueden
agregarse nuevas características en el futuro.
Nota Para más información sobre el estándar del servicio Web XML del W3C,
ver el sitio Web oficial de W3C en http://www.w3c.org.
7. Crear y consumir servicios Web XML 5
¿Por qué utilizar los servicios Web XML?
Sitio de viajes
Northwind Traders
Servicio Web XML
Seleccionar destino: Redmond meteorológico
La previsión
meteorológica es:
Lluvia
Internet Servicio Web XML
El tipo de cambio es: $1.56 tipo de cambio
El billete de avión sólo cuesta:
$1,999.98
Servicio Web XML
precio del billete
Base de datos de
precios de billetes
*****************************
Introducción Los servicios Web XML permiten compartir la lógica y las capacidades de
programación 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 métodos a través de
la Web.
Los servicios Web XML se basan también en estándares del W3C. Los
servicios Web XML permiten además el uso de protocolos Web estándares y
herramientas de soporte que están disponibles en Visual Studio .NET. Con
Visual Studio .NET, es muy fácil desarrollar y consumir servicios Web XML.
Agregar servicios Web Podemos imaginar un número infinito de servicios Web XML que podemos
XML a aplicaciones Web utilizar para agregar características a nuestras aplicaciones Web. La siguiente
tabla muestra una lista de algunos de los servicios Web XML que pueden
utilizarse.
Servicio Web XML Características
Servicios de Proporciona autenticación de usuarios.
autenticación Por ejemplo, Microsoft Passport.
Informes Proporciona informes meteorológicos actualizados para
meteorológicos ubicaciones seleccionadas.
Por ejemplo, un sitio Web podría proporcionar previsiones
meteorológicas locales para una determinada ciudad o área
consumiendo un servicio Web XML sobre información
meteorológica.
Tipos de cambio Proporciona el tipo de cambio actualizado para todas las
monedas.
Por ejemplo, un sitio Web de viajes podría proporcionar
tipos de cambio para posibles destinos de vacaciones
basándose en perfiles de usuario, consumiendo un servicio
Web XML sobre tipos de cambio.
8. 6 Crear y consumir servicios Web XML
(continuación)
Servicio Web XML Características
Precios de billetes de Proporciona precios de billetes actualizados de una o varias
avión líneas aéreas.
Por ejemplo, un sitio Web de viajes podría ofrecer
automáticamente precios con descuento de las principales
líneas aéreas consumiendo un servicio Web XML sobre los
precios de billetes de avión.
Valores de cotización Proporciona valores de cotización actualizados.
Por ejemplo, una empresa podría publicar su propio valor de
cotización en su sitio Web mediante el consumo de un
servicio Web XML sobre valores bursátiles.
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 podrían ofrecer
servicios de reservas de hotel.
Resumen de noticias Proporciona resúmenes de noticias actualizados.
Por ejemplo, una empresa podría 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 gestión 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 daría a los
clientes una visión completa del estado de sus pedidos.
Ejemplo de servicio Web La ilustración anterior muestra un sitio Web hipotético que ofrece varias
XML 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 parámetro 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 código, el sitio Web es más un interfaz gráfico que
combina varios servicios Web XML de compañías no relacionadas.
Este sitio Web de una agencia de viajes, al utilizar servicios Web XML,
proporciona múltiples 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 están
limitadas por los conocimientos de programación 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 meteorológicos o los
tipos de cambio.
9. 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 cómo 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 aplicación, 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 público 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.
10. 8 Crear y consumir servicios Web XML
Buscar un servicio Web XML
1 Publicar la URL del servicio Web
1
XML y su descripción
2 Descubrir el servicio Web XML
2 UDDI
3 Localizar la URL del servicio Web XML
3
4 Leer la descripción .wsdl
4
5 Vincular el servicio Web XML al proxy
5 2
2 1
1
6
6 Invocar el
servicio Web Web 3
3 .disco
XML desde el
formulario Form 4
4 .wsdl
Web Form 5 6
5 6
Mediante el Servicio Web
proxy Proxy
*****************************
Introducción Podemos encontrar servicios Web XML existentes para agregar a nuestro sitio
Web utilizando uno o más servicios de descubrimiento. Estos servicios de
descubrimiento están evolucionando y cambiando rápidamente a medida que el
desarrollo y uso de los servicios Web XML va ganando aceptación en la
comunidad de Internet.
Buscar un servicio Web El proceso de encontrar y vincular a un servicio Web XML es el siguiente:
XML
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 descripción de servicios Web (Web Services
Description Language, WSDL).
4. Generar un objeto proxy a partir del documento WSDL.
Una clase proxy es un código que tiene exactamente el mismo aspecto que
la clase que representa; sin embargo, la clase proxy no contiene ninguna
lógica de aplicación. En lugar de ello, la clase proxy contiene la lógica 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.
11. Crear y consumir servicios Web XML 9
UDDI La especificación UDDI define un modo de publicar y descubrir información
sobre servicios Web XML y las empresas que los suministran.
Las empresas registran individualmente la información sobre los servicios Web
XML que exponen para que otras empresas puedan a continuación utilizarlos.
Una vez que los datos han sido registrados, están disponibles libremente para
cualquier persona que necesite descubrir cuales son los servicios Web XML
que expone un determinado negocio.
Nota Para más información 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.
Archivos DISCO 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 información de descubrimiento para un
servicio Web XML. Estos archivos permiten el descubrimiento programático de
los servicios Web XML. Los siguientes ejemplos muestran la diferencia entre
los archivos estáticos y dinámicos de descubrimiento:
Archivos .disco
Un archivo de descubrimiento estático (.disco) es un documento XML que
contiene enlaces a otros recursos que describen los servicios Web XML.
Los archivos .disco se generan automáticamente para un servicio Web XML
cuando se accede al servicio utilizando una URL con ?DISCO en la cadena
de consulta.
El siguiente código 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 dinámicos (.vsdisco) son documentos de
descubrimiento dinámico que Visual Studio .NET genera automáticamente
durante la fase de desarrollo de un servicio Web XML.
Un archivo .vsdisco es un archivo basado en XML con un nodo raíz
denominado <dynamicDiscovery>. Este nodo puede contener nodos
<exclude>. Cada nodo <exclude> contiene una ruta que el proceso de
descubrimiento dinámico no debería buscar.
Precaución Para mantener el control sobre los servicios Web XML que
pueden descubrir los clientes, deberíamos utilizar únicamente el
descubrimiento dinámico en los servidores Web de desarrollo.
12. 10 Crear y consumir servicios Web XML
El siguiente código 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>
Archivos WSDL Un archivo WSDL define la gramática XML que se utiliza para la
comunicación 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 información sobre un servicio Web
XML:
Dónde encontrar la URL.
Los métodos y propiedades del servicio Web XML.
Tipos de datos utilizados.
Protocolos de comunicación.
Nota Para más información sobre los archivos DISCO y WSDL, ver
“Descubrimiento de servicios Web XML” en la documentación de Visual
Studio .NET.
13. Crear y consumir servicios Web XML 11
Lección: invocar un servicio Web XML mediante HTTP
Cómo invocar un servicio Web XML mediante HTTP
Práctica: invocar un servicio Web XML mediante
HTTP
*****************************
Introducción En esta lección, estudiaremos cómo 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
diseño para identificar y probar los servicios Web XML. El acceso directo
permite visualizar los métodos, propiedades y el resultado de un servicio Web
XML en un entorno amigable para el desarrollador.
Objetivos de la lección En esta lección, aprenderemos a:
Invocar un servicio Web XML con un explorador utilizando acceso directo
al protocolo HTTP-Get.
Identificar los métodos Web que están disponibles desde un servicio Web
XML.
Invocar métodos Web desde un servicio Web XML utilizando acceso
directo al protocolo HTTP-Get, y visualizar la respuesta.
14. 12 Crear y consumir servicios Web XML
Cómo invocar un servicio Web XML utilizando HTTP
1. Ir a la URL del servicio Web XML
1
1
2. Seleccionar un
2
2
método del
servicio
Web XML
3. Invocar el
3
3
método del
servicio
Web XML
4. Ver la respuesta
4
4
XML
*****************************
Introducción Cuando accedemos a un servicio Web XML directamente con un navegador,
accedemos en primer lugar a la página de descripción HTML,
DefaultWsdlHelpGenerator.aspx. Desde esta página, podemos seleccionar entre
los métodos del servicio Web XML disponibles e invocar un método con
parámetros. Recibiremos una respuesta en formato XML.
También podemos utilizar el protocolo HTTP-Post para acceder a un servicio
Web XML. No accederemos a la página predeterminada,
DefaultWsdlHelpGenerator.aspx; sin embargo, la respuesta final del servicio
Web XML será idéntica a una petición HTTP-Get.
Navegar hasta la URL Tras haber encontrado un servicio Web XML en UDDI, utilizamos la URL
del servicio Web XML .asmx para navegar a la página de descripción HTML. Esta página de
descripción proporciona información sobre el propósito de un servicio Web
XML, los métodos Web disponibles que contiene, los parámetros del método
Web, y las respuestas. Además, podemos utilizar la página de descripción
HTML para probar la funcionalidad del servicio Web XML.
La siguiente ilustración muestra la vista del navegador con un servicio Web
XML Stocks que se utilizará en las demostraciones de este módulo.
15. Crear y consumir servicios Web XML 13
Seleccionar un método Cuando accedemos a la página de descripción HTML de un servicio Web
del servicio Web XML XML, el navegador muestra los métodos disponibles del servicio Web XML.
Podemos hacer clic en un método Web para visualizar los parámetros
disponibles para ese método Web.
La siguiente ilustración muestra la vista del navegador resultante de la selección
del método Web GetRating en el servicio Web XML Stocks.
También podemos hacer clic en el enlace Service Description de la parte
superior de la página de descripción HTML para ver el contrato WSDL, que
contiene una descripción XML del servicio Web XML y su contenido.
Invocar el método Web Para invocar un método Web, rellenamos el formulario y hacemos clic en
Invoke. El formulario Web Form pasa el nombre del método, los parámetros
requeridos y los valores de los parámetros a la URL del servicio Web XML.
Ver la respuesta XML Los servicios Web XML siempre devuelven los datos en formato XML. La
siguiente ilustración muestra la vista del navegador con el resultado de invocar
el servicio Web XML Stocks con el parámetro Contoso.
16. 14 Crear y consumir servicios Web XML
Práctica: invocar un servicio Web XML utilizando HTTP
Los estudiantes:
Introducirán la URL de un servicio Web
XML en el equipo del instructor
Seleccionarán el método del servicio Web
XML para invocar
Introducirán valores para los parámetros
Visualizarán el XML devuelto
Tiempo: 5 Minutos
*****************************
Introducción En esta práctica, accederemos a un servicio Web XML en el equipo del
instructor y probaremos los tres métodos Web disponibles.
Acceder a este servicio Web XML
1. Abrir http://EquipoInstructor/Mod13VB/WeatherService.asmx o
http://EquipoInstructor/Mod13CS/WeatherService.asmx en un
navegador.
Invocar el método Web 2. Hacer clic en WeatherByCity.
WeatherByCity
3. En el campo City, escribir el nombre de una ciudad, como Seattle, de la que
deseemos conocer la predicción meteorológica de mañana.
4. Hacer clic en Invoke.
Introducir la respuesta XML en las siguientes líneas.
_____________________________________________________________
_____________________________________________________________
5. Invocar de nuevo el método Web WeatherByCity, esta vez pasando otro
nombre de ciudad, como London, como parámetro en el campo City.
Observar la respuesta XML.
Observar también que con nombres de ciudades distintos de Seattle, se
recibe una previsión meteorológica aleatoria de sol, nublado, o lluvia.
Cuando se introduce Seattle en el campo City, siempre se recibe la
previsión meteorológica de sol.
17. Crear y consumir servicios Web XML 15
Invocar el método Web 6. Regresar a la página preliminar
TemperatureByCity 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 debería ser un valor aleatorio entre 31 y 60 grados
Fahrenheit.
Invocar el método Web 10. Regresar a la página preliminar
TravelAdviceByCity 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 método Web TravelAdviceByCity, esta vez el nombre
de otra ciudad, como London, como parámetro en el campo City.
15. Observar la respuesta XML.
18. 16 Crear y consumir servicios Web XML
Lección: utilizar un proxy para invocar un servicio Web
XML
Utilizar proxies para invocar servicios Web XML
Cómo utilizar un proxy para invocar un servicio Web
XML
Práctica dirigida por el instructor: utilizar un proxy
para invocar un servicio Web XML
Controlador de errores del servicio Web XML
Demostración: probar la disponibilidad de un servicio
Web XML
*****************************
Introducción Para invocar programáticamente un servicio Web XML desde un formulario
Web Form, debemos crear un proxy para controlar la invocación. En esta
lección, estudiaremos cómo crear un proxy de referencia Web para un método
de un servicio Web XML, y cómo invocar el método Web desde un formulario
Web Form.
Objetivos de la lección En esta lección, 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.
19. Crear y consumir servicios Web XML 17
Utilizar proxies para invocar servicios Web XML
Parecen idénticos que la clase original, pero no
contienen la lógica de la aplicación
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 asíncronas
Web
Form Internet Servicio
Web XML
SOAP
Proxy
*****************************
Introducción Para invocar un servicio Web XML desde un formulario Web Form, debemos
crear una referencia Web al servicio Web XML en nuestro proyecto de
aplicación 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 código que parece exactamente igual a la clase que
representa, pero no contiene lógica de aplicación. En lugar de ello, la clase
proxy contiene la lógica de combinación 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 aplicación Web.
Visual Studio .NET crea automáticamente 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 código proxy.
Interactuar con SOAP Los proxies y los servicios Web XML interactúan utilizando SOAP, que es un
protocolo XML utilizado para intercambiar información 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 código
que muestra la página de descripción HTML.
El proceso de acceder a un servicio Web XML mediante un proxy es el
siguiente:
1. El usuario envía una petición 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 petición SOAP para el método Web GetRating en un
servicio Web XML Stocks y que pasa el argumento Contoso:
20. 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 envía 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.
Creado desde el archivo Visual Studio .NET crea automáticamente un proxy cuando seleccionamos
.asmx.wsdl 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 métodos y parámetros Web disponibles en el
servicio Web XML.
21. Crear y consumir servicios Web XML 19
Agregar miembros para Cuando creamos un proxy utilizando Visual Studio .NET, hay disponibles
gestionar las varios métodos y propiedades que soportan un acceso programático al servicio
interacciones con el Web XML. Los miembros disponibles para el proxy incluyen:
servicio Web XML y
soportar llamadas Miembros creados dentro del proxy
asíncronas
La infraestructura para realizar llamadas asíncronas desde un formulario
Web Form a un servicio Web XML está generada en la clase proxy que
Visual Studio .NET crea automáticamente cuando agregamos una referencia
Web. Por cada método Web del servicio Web XML, se crea
automáticamente un método BeginNombreMétodoWeb y un método
EndNombreMétodoWeb en el proxy:
• BeginNombreMétodoWeb
El método Begin se utiliza para iniciar la comunicación asíncrona con el
método NombreMétodoWeb de un servicio Web XML.
• EndNombreMétodoWeb
El método End se utiliza para finalizar una comunicación asíncrona con
el método NombreMétodoWeb de un servicio Web XML, y recuperar la
respuesta completa del método del servicio Web XML.
Por ejemplo, crear una referencia Web al servicio Web XML Stocks crea un
proxy con dos métodos adicionales: BeginGetRating y EndGetRating.
Nota Para más información sobre la invocación asíncrona de un servicio
Web XML, ver “Comunicación con servicios Web XML de modo
asíncrona”, en la documentación de Visual Studio .NET.
Miembros heredados de SoapHttpClientProtocol
Un proxy hereda varios métodos 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 síncrono.
• Url
La propiedad Url obtiene o establece la URL base del servicio Web
XML que el cliente está solicitando.
Note Para más información sobre los miembros SoapHttpClientProtocol,
ver “SoapHttpClientProtocol (Miembros de)”, en la documentación de
Visual Studio .NET.
22. 20 Crear y consumir servicios Web XML
Cómo utilizar un proxy para invocar un servicio Web XML
1. Crear una referencia Web para el servicio Web XML
1
1
2. Crear una instancia del servicio Web XML
2
2
3. Invocar los métodos Web del servicio Web XML
3
3
4. Generar la aplicación Web ASP.NET
4
4
Sub Button1_Click(s As Object, e As EventArgs)...
Sub Button1_Click(s As Object, e As EventArgs)...
Dim ProxyGetStocks As New _
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
GetStocks.localhost.Service1()
lblResults.Text = _
lblResults.Text = _
ProxyGetStocks.GetRating("Contoso")
ProxyGetStocks.GetRating("Contoso")
End Sub
End Sub
Código de ejemplo en C#
*****************************
Introducción 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 aplicación 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 Dirección del cuadro de diálogo 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.
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.
23. 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 botón invoca el método GetRating del servicio Web
XML Stocks, utilizar el siguiente código en el procedimiento de evento
Click GetStocks.localhost.Service1:
Visual Basic .NET Dim ProxyGetStocks As New GetStocks.localhost.Service1()
C# GetStocks.localhost.Service1 ProxyGetStocks =
new GetStocks.localhost.Service1();
GetStocks es el nombre de la aplicación Web, localhost es el nombre de la
referencia Web, y Service1 el nombre del servicio Web.
3. Invocar los métodos Web del servicio Web XML:
Visual Basic .NET Label1.Text = ProxyGetStocks.GetRating("Contoso")
C# Label1.Text = ProxyGetStocks.GetRating("Contoso");
El código completo en un procedimiento de evento button_Click sería
similar al siguiente:
Visual Basic .NET 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
C# 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 aplicación Web ASP.NET.
Compilar la aplicación Web haciendo clic en Generar en el menú Generar.
24. 22 Crear y consumir servicios Web XML
Práctica dirigida por el instructor: utilizar un proxy para invocar un
servicio Web XML
Crear un nuevo proyecto de aplicación Web
ASP.NET
Crear un proxy para un servicio Web XML
Probar con un navegador
Visualizar el archivo reference.vb o
reference.cs
*****************************
Introducción En esta práctica, utilizaremos un proxy para invocar un servicio Web XML.
Ejecutar la práctica dirigida por el instructor
Crear un nuevo proyecto 1. Crear un nuevo proyecto de aplicación Web ASP.NET denominado
GetWeatherVB o GetWeatherCS en Visual Studio .NET.
Crear un proxy 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
automáticamente por Visual Studio .NET.
4. Cambiar el nombre de la referencia Web en el Explorador de soluciones por
WeatherWebRef.
5. Abrir la página predeterminada Webform1.aspx en vista de Diseño y
agregar un control Text Box, un control Button y un control Label al
formulario Web Form. Conservar las propiedades predeterminadas de cada
control.
25. Crear y consumir servicios Web XML 23
6. Crear un procedimiento de evento Click para el botón Button1 y agregar el
siguiente código:
Visual Basic .NET 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
C# private void Button1_Click(object sender,
System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}
Probar con un 7. Generar y examinar Webform1.aspx.
explorador
8. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botón. A continuación, escribir en el cuadro de texto el
nombre de otra ciudad, como London, y hacer clic de nuevo en el botón.
Si se introduce Seattle la previsión meteorológica será sol.
Si se introduce el nombre de otra ciudad, el resultado de la previsión
meteorológica será aleatorio: sol, nublado o lluvia.
Visualizar el archivo de 9. Visualizar el archivo reference.vb o reference.cs. El archivo Reference.vb o
referencia 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 código fuente del proxy que
Visual Studio .NET ha generado automáticamente. El proxy tiene métodos
Begin y End para la invocación asíncrona de cada método Web del servicio
Web XML.
26. 24 Crear y consumir servicios Web XML
Control de errores del servicio Web XML
Servicio no disponible
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1 ProxyGetStocks = new
GetStocks.StockWebRef.Service1();
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout = 10000;
ProxyGetStocks.Timeout = 10000;
try
try
{
{
lblMessage.Text =
lblMessage.Text =
ProxyGetStocks.GetRating(TextBox1.Text);
ProxyGetStocks.GetRating(TextBox1.Text);
}
}
catch (Exception err)
catch (Exception err)
{
{
lblMessage.Text = err.Message;
lblMessage.Text = err.Message;
}
}
Excepciones SOAP de servicios Web XML
Código de ejemplo en Visual Basic .NET
*****************************
Introducción 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.
Servicio Web XML no Para probar la disponibilidad de un servicio Web XML desde un formulario
disponible Web Form ASP.NET, debemos establecer un tiempo de espera para el proxy
del servicio Web XML. Debemos utilizar una instrucción
Try…Catch…Finally para gestionar la excepción del tiempo de espera:
Establecer el parámetro 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 código:
ProxyName.Timeout = valor en milisegundos
Controlar las excepciones del tiempo de espera
El siguiente código invoca el servicio Web XML, captura cualquier
excepción y muestra un mensaje de error en Label1:
Visual Basic .NET Try
'call the XML Web service
Catch err As Exception
Label1.Text = err.Message
End Try
27. Crear y consumir servicios Web XML 25
C# try
{
//call the XML Web service
}
catch (Exception err)
{
Label1.Text = err.Message;
}
Excepciones SOAP de Si un servicio Web XML no puede procesar una petición, puede devolver un
servicios Web XML mensaje de error utilizando una instancia del objeto SoapException de la clase
System.Web.Services. Para controlar estas excepciones, necesitamos utilizar
una instrucción Try…Catch…Finally.
El siguiente código captura la excepción y muestra un mensaje de error en
Label1:
Visual Basic .NET 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";
}
28. 26 Crear y consumir servicios Web XML
Demostración: probar la disponibilidad de un servicio Web XML
Establecer una instrucción Try…Catch para
el control de errores del tiempo de espera
Ralentizar el servicio Web
Evaluar la excepción
*****************************
Introducción En esta demostración, estudiaremos cómo probar si el servicio Web XML está
disponible.
Ejecutar la demostración
1. Volver a abrir el proyecto GetWeather de la práctica anterior.
2. Establecer el tiempo de espera de try…catch
3. Modificar el código del controlador de evento del botón para establecer un
tiempo de espera de 10 segundos (10.000) y agregar código al controlador
de evento del botón para añadir una instrucción try…catch sobre la llamada
al servicio Web XML.
El código debería ser similar al siguiente:
Visual Basic .NET 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
29. Crear y consumir servicios Web XML 27
C# 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 botón para verificar que la aplicación sigue funcionando
como antes.
Ralentizar el servicio 6. Abrir el proyecto Mod13 de la solución 2310Demos que contiene el
Web XML servicio Web XML.
7. En la parte superior de la página WeatherService.asmx.vb o
WeatherService.asmx.cs, agregar la siguiente instrucción de importación:
Visual Basic .NET Imports System.Threading
C# using System.Threading;
8. En la parte inicial del método Web WeatherByCity, agregar el siguiente
código para retrasar la respuesta a 40 segundos:
Visual Basic .NET Thread.Sleep(40000)
C# Thread.Sleep(40000);
Este código hará que el servicio Web XML funcione muy despacio para
simular un servicio Web XML que no está en línea o que opera con mucha
lentitud.
Probar la excepción 9. Generar la aplicación Web haciendo clic con el botón derecho Mod13VB o
Mod13CS en el Explorador de soluciones, y hacer clic en Generar.
10. En el proyecto GetWeather, visualizar la página WebForm1.aspx en el
navegador.
11. Para probar el servicio Web XML, escribir Seattle en el cuadro de texto y
hacer clic en el botón.
Transcurridos 10 segundos, debería aparecer el mensaje en la etiqueta “The
operation has timed-out”.
30. 28 Crear y consumir servicios Web XML
Lección: crear un servicio Web XML
Cómo crear un servicio Web XML
Código del servicio Web XML
Práctica dirigida por el instructor: crear un servicio
Web XML
*****************************
Introducción Visual Studio .NET proporciona plantillas que facilitan el desarrollo de los
servicios Web XML. En esta lección, estudiaremos cómo utilizar estas
plantillas para crear un servicio Web XML.
Objetivos de la lección En esta lección, 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 código generado cuando se crea un nuevo proyecto de servicio
Web XML utilizando ASP.NET.
31. Crear y consumir servicios Web XML 29
Cómo crear un servicio Web XML
1. Crear un nuevo proyecto de servicio Web
1
1
XML en Visual Studio .NET
2. Declarar las funciones WebMethod
2
2
3. Generar el proyecto de servicio Web XML
3
3
4. Probar
4
4
con un
navegador
*****************************
Introducción Visual Studio .NET proporciona plantillas y un método de servicio Web XML
predeterminado que nos sirven de ayuda para iniciar la creación 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á automáticamente las carpetas necesarias, y la
página 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 invocarán a través del Web.
Visual Studio .NET crea una función predeterminada “Hello World” en la
página del servicio Web XML. La función puede activarse eliminando las
etiquetas de comentario.
Casi cualquier tipo de función puede ser escrita como una función de
métodos de un servicio Web XML, desde un sencillo cálculo 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 lógica. Al igual que los formularios Web Forms, ASP.NET
compila el servicio Web XML en Microsoft Intermediate Language (MSIL)
para su posterior ejecución.
32. 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 botón derecho en Servicio Web
XML en el Explorador de soluciones y clic en Ver en el navegador.
También puede probarse el servicio Web XML con un navegador remoto,
desde Visual Studio .NET, haciendo clic con el botón 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
33. Crear y consumir servicios Web XML 31
Código del servicio Web XML
Página .asmx
<%@ WebService Language="vb"
<%@ WebService Language="vb"
Codebehind="Service1.asmx.vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
Class="XMLWebServiceName.Service1" %>
Página .asmx.vb
Imports System
Imports System
Imports System.Web.Services
Imports System.Web.Services
Class Service1
Class Service1
<WebMethod()> Public Function function1() As type
<WebMethod()> Public Function function1() As type
'function_here
'function_here
End Function
End Function
End Class
End Class
Código de ejemplo en C#
*****************************
Introducción 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 página Web como
un servicio Web XML, y el archivo .asmx.vb o .asmx.cs, también denominado
página de código subyacente, contiene la lógica del servicio Web XML.
Página .asmx Como un servicio Web XML no tiene ninguna interfaz de usuario, la página
.asmx únicamente contiene información del tipo de archivo y una directiva a la
página de código subyacente.
El código de una página .asmx es como sigue:
Visual Basic .NET <%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>
C# <%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
Class="XMLWebServiceName.Service1" %>
Las páginas .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
página Web. Algunos valores de este atributo son: vb, c# y JScript™.
34. 32 Crear y consumir servicios Web XML
Codebehind
El atributo Codebehind identifica el nombre y la ubicación de la página de
código subyacente .asmx.vb o .asmx.cs que contiene la lógica 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 debería ser
pública, y debería heredarse de la clase base del servicio Web XML.
La clase predeterminada del servicio Web XML es:
Visual Basic .NET Class Service1
C# class Service1
Página de código El archivo de código subyacente es la página que contiene la lógica del servicio
subyacente Web XML.
El código predeterminado de una página de código subyacente es:
Visual Basic .NET 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
35. Crear y consumir servicios Web XML 33
C# 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 páginas de código subyacente tienen los siguientes atributos:
Espacios de nombres
Visual Basic .NET 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 métodos y
las clases de propiedades que soportan los servicios Web XML.
36. 34 Crear y consumir servicios Web XML
C# 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 métodos 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.
Métodos del servicio Web XML
Cada método que se exponga desde el servicio Web XML debe estar
marcado con un atributo <WebMethod()> personalizado. Este atributo se
requiere para crear un método que pueda ser invocado a través del Web. Si
el método no tiene el atributo personalizado <WebMethod()>, el método no
será expuesto desde el servicio Web XML.
Visual Studio .NET crea un método Web "Hello World" predeterminado,
que puede activarse eliminando las etiquetas comentadas en la página del
servicio Web XML. Podemos modificar la función predeterminada, o
agregar nuestras propias funciones.
El siguiente código es el método predeterminado del servicio Web XML de
Visual Studio .NET:
Visual Basic .NET <WebMethod()> Public Function HelloWorld() As String
HelloWorld = "Hello World"
End Function
C# [WebMethod]
public string HelloWorld()
{
return "Hello World";
}
37. Crear y consumir servicios Web XML 35
Práctica dirigida por el instructor: crear un servicio Web XML
Crear un servicio Web XML
Probar el servicio Web XML
Cambiar el espacio de nombres
*****************************
Introducción En esta práctica, 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 compañía Contoso como parámetro de entrada. El
resto de nombres de compañías deberían devolver un valor Sell.
Ejecutar esta práctica
Crear un servicio Web 1. Crear un nuevo proyecto de servicio Web ASP.NET en Visual Studio .NET
XML y especificar la ubicación del servicio Web en
Visual Basic .NET http://localhost/StocksVB
C# http://localhost/StockCS.
Automáticamente se crea una carpeta StocksVB o StocksCS en la carpeta
Inetpubwwwroot.
2. Abrir el archivo predeterminado .asmx, Service1.asmx, en vista de Código
haciendo clic con el botón derecho sobre el archivo en el Explorador de
soluciones y clic en Ver código.
Observar que el nombre predeterminado de la clase es Service1, y que
Visual Studio .NET ha abierto automáticamente el archivo de código
subyacente Sevice1.asmx.vb o Sevice1.asmx.cs.
38. 36 Crear y consumir servicios Web XML
3. Crear una función GetRating como sigue:
Visual Basic .NET <WebMethod()> Public Function GetRating( _
ByVal Ticker As String) As String
If Ticker ="Contoso" Then
Return "Buy"
Else
Return "Sell"
End If
End Function
C# [WebMethod]
public string GetRating(String Ticker)
{
if (Ticker == "Contoso")
return "Buy";
else
return "Sell";
}
4. Guardar el archivo.
Probar el servicio Web 5. Generar y examinar el servicio Web XML en Microsoft Internet Explorer
XML visualizando
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
Para abrir el servicio Web XML, también puede hacerse clic con el botón
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
recomendación de una cotización, como Contoso o Northwind Traders, en
el campo Ticker, y hacer clic en Invoke.
Cambiar o agregar el Para evitar que aparezca el comentario sobre el espacio de nombres cuando
espacio de nombres 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.
Visual Basic .NET Modificar la directiva del espacio de nombres en Sevice1.asmx.vb para que
utilice http://microsoft.com/webservices/:
<WebService(Namespace:= _
"http://microsoft.com/webservices/")> _
C# Agregar el atributo WebService y la directiva del espacio de nombres
debajo de la información de resumen en Service1.asmx.cs.
El código C# debería ser como el siguiente (con el código nuevo que debe
añadirse en negrita):
39. 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
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
Observar que desaparece el comentario sobre el espacio de nombres.
Agregar una descripción 11. Agregar una descripción para Class. El código debería ser similar al
para la clase y el método siguiente:
Web
Visual Basic .NET <WebService(Namespace:= _
"http://microsoft.com/webservices/", _
Description:="My class description...")> _
C# [WebService(Namespace=
"http://microsoft.com/webservices/",
Description="My class description...")]
12. Agregar una descripción a la directiva WebMethod. El código debería ser
similar al siguiente:
Visual Basic .NET <WebMethod(Description:="My WebMethod description...")>
C# [WebMethod(Description="My WebMethod description...")]
13. Guardar y volver a generar el archivo.
14. Examinar el servicio Web en Internet Explorer en
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
Verificar que aparecen las descripciones.