SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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
Servicios web xml
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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
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";
                      }
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
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”.
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.
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.
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
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™.
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
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.
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";
                               }
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.
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):
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Cjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsCjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsandres880106
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y CaracterísticasLuis Fernando Aguas Bucheli
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesHéctor Garduño Real
 
Actividad de recurecuperacion (2)
Actividad de recurecuperacion (2)Actividad de recurecuperacion (2)
Actividad de recurecuperacion (2)BBRYANN
 
4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Windows communication foundation
Windows communication foundationWindows communication foundation
Windows communication foundationJoseph Bros
 
Windows communication foundation
Windows communication foundationWindows communication foundation
Windows communication foundationAlexis Arguello
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre aspkarenReyes152
 
Revision de tecnologias web
Revision de tecnologias webRevision de tecnologias web
Revision de tecnologias webFRISLY5
 
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3ballesterosymendoza
 

Was ist angesagt? (18)

Web services1
Web services1Web services1
Web services1
 
Cjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsCjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-ws
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características
9- Unidad 3: Webservices-3.1. Introducción, Conceptos y Características
 
Wcf
WcfWcf
Wcf
 
EQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILASEQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILAS
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajes
 
Actividad de recurecuperacion (2)
Actividad de recurecuperacion (2)Actividad de recurecuperacion (2)
Actividad de recurecuperacion (2)
 
4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Windows communication foundation
Windows communication foundationWindows communication foundation
Windows communication foundation
 
Windows communication foundation
Windows communication foundationWindows communication foundation
Windows communication foundation
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre asp
 
Servicios web pw
Servicios web pwServicios web pw
Servicios web pw
 
Revision de tecnologias web
Revision de tecnologias webRevision de tecnologias web
Revision de tecnologias web
 
Ekipo 2
Ekipo 2Ekipo 2
Ekipo 2
 
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3
Desarrollo de la web (laura ballesteros & gicela mendoza) 11.3
 
0. Antecedentes Asp
0. Antecedentes Asp0. Antecedentes Asp
0. Antecedentes Asp
 

Andere mochten auch

A propósito del expediente eléctronico en perú
A propósito del expediente eléctronico en perúA propósito del expediente eléctronico en perú
A propósito del expediente eléctronico en perúBryan Castillo
 
LAS TECNOLOGIAS DE INFORMACION
LAS TECNOLOGIAS DE INFORMACIONLAS TECNOLOGIAS DE INFORMACION
LAS TECNOLOGIAS DE INFORMACIONYolanda Monsalve
 
Historia elizabeth
Historia elizabethHistoria elizabeth
Historia elizabethismdgs
 
2simce8c 130930130452-phpapp02 (2)
2simce8c 130930130452-phpapp02 (2)2simce8c 130930130452-phpapp02 (2)
2simce8c 130930130452-phpapp02 (2)Lis Venegas Cabezas
 
Universidad fermín toro saia web
Universidad fermín toro saia webUniversidad fermín toro saia web
Universidad fermín toro saia webjdvilchez
 
Matekid scolores
Matekid scoloresMatekid scolores
Matekid scoloresmatekids
 
Comenius alfonso x 2012 2014
Comenius alfonso x 2012 2014Comenius alfonso x 2012 2014
Comenius alfonso x 2012 2014Agula Kursa
 
Animales en extincion
Animales en extincionAnimales en extincion
Animales en extincionipiquera
 
Cultura maya.moodle
Cultura maya.moodleCultura maya.moodle
Cultura maya.moodleMarguiDiaz
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacionmonik_vargas
 
Tecnologia de informacion y comunicacion-equipo 2 carora
Tecnologia de informacion y comunicacion-equipo 2 caroraTecnologia de informacion y comunicacion-equipo 2 carora
Tecnologia de informacion y comunicacion-equipo 2 caroradianaydorviceth
 

Andere mochten auch (20)

A propósito del expediente eléctronico en perú
A propósito del expediente eléctronico en perúA propósito del expediente eléctronico en perú
A propósito del expediente eléctronico en perú
 
LAS TECNOLOGIAS DE INFORMACION
LAS TECNOLOGIAS DE INFORMACIONLAS TECNOLOGIAS DE INFORMACION
LAS TECNOLOGIAS DE INFORMACION
 
Colegio nacional nicolás esquerra 1
Colegio nacional nicolás esquerra 1Colegio nacional nicolás esquerra 1
Colegio nacional nicolás esquerra 1
 
Historia elizabeth
Historia elizabethHistoria elizabeth
Historia elizabeth
 
2simce8c 130930130452-phpapp02 (2)
2simce8c 130930130452-phpapp02 (2)2simce8c 130930130452-phpapp02 (2)
2simce8c 130930130452-phpapp02 (2)
 
Universidad fermín toro saia web
Universidad fermín toro saia webUniversidad fermín toro saia web
Universidad fermín toro saia web
 
Cómo molan los animales!
Cómo molan los animales!Cómo molan los animales!
Cómo molan los animales!
 
Matekid scolores
Matekid scoloresMatekid scolores
Matekid scolores
 
Comenius alfonso x 2012 2014
Comenius alfonso x 2012 2014Comenius alfonso x 2012 2014
Comenius alfonso x 2012 2014
 
Zapata,mosquera
Zapata,mosqueraZapata,mosquera
Zapata,mosquera
 
La luz
La luzLa luz
La luz
 
La nena
La nenaLa nena
La nena
 
Animales en extincion
Animales en extincionAnimales en extincion
Animales en extincion
 
Cultura maya.moodle
Cultura maya.moodleCultura maya.moodle
Cultura maya.moodle
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Chokololis
ChokololisChokololis
Chokololis
 
Antineoplásicos 1
Antineoplásicos 1Antineoplásicos 1
Antineoplásicos 1
 
Tecnologia de informacion y comunicacion-equipo 2 carora
Tecnologia de informacion y comunicacion-equipo 2 caroraTecnologia de informacion y comunicacion-equipo 2 carora
Tecnologia de informacion y comunicacion-equipo 2 carora
 
Programació Android 2
Programació Android 2Programació Android 2
Programació Android 2
 
Los derechos del niño
Los derechos del niñoLos derechos del niño
Los derechos del niño
 

Ähnlich wie Servicios web xml (20)

Web services
Web servicesWeb services
Web services
 
Java2 servicios web
Java2 servicios webJava2 servicios web
Java2 servicios web
 
Reporte prog web
Reporte prog webReporte prog web
Reporte prog web
 
9-Unidad 3: Diseños de Vista-3.1 Creación Web Services
9-Unidad 3: Diseños de Vista-3.1 Creación Web Services9-Unidad 3: Diseños de Vista-3.1 Creación Web Services
9-Unidad 3: Diseños de Vista-3.1 Creación Web Services
 
[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloper[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloper
 
WEB 2.0 Y RED SOCIAL
WEB 2.0 Y RED SOCIALWEB 2.0 Y RED SOCIAL
WEB 2.0 Y RED SOCIAL
 
LA WEB 2.0
LA WEB 2.0LA WEB 2.0
LA WEB 2.0
 
23444719 monografia-de-web-services
23444719 monografia-de-web-services23444719 monografia-de-web-services
23444719 monografia-de-web-services
 
Web services
Web servicesWeb services
Web services
 
Windows communication foundation(wcf)
Windows communication foundation(wcf)Windows communication foundation(wcf)
Windows communication foundation(wcf)
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
LA WEB 2.0
LA WEB 2.0LA WEB 2.0
LA WEB 2.0
 
web 2.0
web 2.0web 2.0
web 2.0
 
LA WEB 2.0
LA WEB 2.0LA WEB 2.0
LA WEB 2.0
 
LA WEB 2.0
LA WEB 2.0LA WEB 2.0
LA WEB 2.0
 
WEB 2.0
WEB 2.0WEB 2.0
WEB 2.0
 
Web services
Web servicesWeb services
Web services
 
Servicios web
Servicios web Servicios web
Servicios web
 
Servicios web ITT
Servicios web ITTServicios web ITT
Servicios web ITT
 
Servicios web itt
Servicios web ittServicios web itt
Servicios web itt
 

Kürzlich hochgeladen

Simuladores Electronicos Del Circuito Electronicos
Simuladores Electronicos Del Circuito ElectronicosSimuladores Electronicos Del Circuito Electronicos
Simuladores Electronicos Del Circuito ElectronicosErickOv
 
Espiraleros y espirales (3) catálogo.pdf
Espiraleros y espirales (3) catálogo.pdfEspiraleros y espirales (3) catálogo.pdf
Espiraleros y espirales (3) catálogo.pdfjpgaraglia03
 
diseño módulos, submódulos y supermódulos.pptx
diseño módulos, submódulos y supermódulos.pptxdiseño módulos, submódulos y supermódulos.pptx
diseño módulos, submódulos y supermódulos.pptxlou lou
 
elementos del diseño bases conceptuales, visuales, etc.pptx
elementos del diseño bases conceptuales, visuales, etc.pptxelementos del diseño bases conceptuales, visuales, etc.pptx
elementos del diseño bases conceptuales, visuales, etc.pptxlou lou
 
Catalogo de diseño contemporáneo relevante
Catalogo de diseño contemporáneo relevanteCatalogo de diseño contemporáneo relevante
Catalogo de diseño contemporáneo relevantesantiagovelez61
 
periodico para ingles / comunicacion.pdf
periodico para ingles / comunicacion.pdfperiodico para ingles / comunicacion.pdf
periodico para ingles / comunicacion.pdfacoellob
 
Artículo Iluminación y color para el diseño de espacios interiores por Oriett...
Artículo Iluminación y color para el diseño de espacios interiores por Oriett...Artículo Iluminación y color para el diseño de espacios interiores por Oriett...
Artículo Iluminación y color para el diseño de espacios interiores por Oriett...ORIETTA POLIFRONI
 

Kürzlich hochgeladen (7)

Simuladores Electronicos Del Circuito Electronicos
Simuladores Electronicos Del Circuito ElectronicosSimuladores Electronicos Del Circuito Electronicos
Simuladores Electronicos Del Circuito Electronicos
 
Espiraleros y espirales (3) catálogo.pdf
Espiraleros y espirales (3) catálogo.pdfEspiraleros y espirales (3) catálogo.pdf
Espiraleros y espirales (3) catálogo.pdf
 
diseño módulos, submódulos y supermódulos.pptx
diseño módulos, submódulos y supermódulos.pptxdiseño módulos, submódulos y supermódulos.pptx
diseño módulos, submódulos y supermódulos.pptx
 
elementos del diseño bases conceptuales, visuales, etc.pptx
elementos del diseño bases conceptuales, visuales, etc.pptxelementos del diseño bases conceptuales, visuales, etc.pptx
elementos del diseño bases conceptuales, visuales, etc.pptx
 
Catalogo de diseño contemporáneo relevante
Catalogo de diseño contemporáneo relevanteCatalogo de diseño contemporáneo relevante
Catalogo de diseño contemporáneo relevante
 
periodico para ingles / comunicacion.pdf
periodico para ingles / comunicacion.pdfperiodico para ingles / comunicacion.pdf
periodico para ingles / comunicacion.pdf
 
Artículo Iluminación y color para el diseño de espacios interiores por Oriett...
Artículo Iluminación y color para el diseño de espacios interiores por Oriett...Artículo Iluminación y color para el diseño de espacios interiores por Oriett...
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.