| Artículos | 01 ABR 2002

Implementación sencilla de servicios web con Visual Studio .NET

Tags: Histórico
José M. Alarcón.
En el artículo anterior se presentaron los servicios web: qué son, de dónde vienen y hacia dónde van. Tras la teoría veremos una sencilla aplicación práctica construyendo, paso a paso, un servicio web con Visual Studio .NET, y comprobaremos lo extremadamente simple que es su creación con esta herramienta.

Para este ejemplo práctico hemos elegido Visual Studio .NET por su reciente aparición en el mercado, y porque es tal vez la herramienta más sencilla de utilizar para estos menesteres de todas las existentes. Se ha usado como lenguaje de programación Visual Basic .NET, ya que es el de sintaxis más sencilla de todos los que forman parte del producto. En cualquier caso, dada la proliferación de los servicios web y SOAP en todos los ámbitos, prácticamente todos los lenguajes de programación (Java, Delphi, Visual Studio 6, etc.) permiten hoy en día crear aplicaciones distribuidas utilizando esta tecnología, así que no tendrá demasiados problemas para sacarles provecho enseguida usando su herramienta favorita.
Nuestro ejemplo, WS_PCWorld, será un servicio web muy simple que se ocupará únicamente de devolver la fecha y la hora actuales del servidor en el que se ejecute. Aun siendo tan sencillo, nos sirve perfectamente para ilustrar desde la práctica los conceptos vistos anteriormente.

1.- Crear una nueva solución
Tras haber ejecutado Visual Studio .Net, pulsamos el botón Nuevo Proyecto y se abre el diálogo de selección de la Figura 1. En él podemos elegir entre multitud de proyectos diferentes en distintos lenguajes. Si pulsamos en el árbol de la izquierda sobre el nodo Proyectos de Visual Basic, veremos que entre ellos está disponible Servicio Web ASP.NET.
Introducimos el nombre deseado para nuestro nuevo proyecto, en este caso WS_PCWorld, y además señalamos en qué servidor de aplicaciones queremos albergarlo para su posterior uso remoto. Dicho servidor debe tener instaladas las extensiones de Frontpage para que Visual Studio .NET pueda comunicarse correctamente con él. En este caso vamos a utilizar el servidor local y, por lo tanto, escribimos http://localhost/ para el campo Ubicación.
Tras haber aceptado, se creará la estructura básica de archivos y directorios para nuestro proyecto en el directorio c:\Intetpub\wwwroot\WS_PCWorld (o en el directorio por defecto que hayamos elegido para instalar Internet Information Server). El proceso se indicará mediante una ventana animada como la que se observa en la parte inferior de la Figura 1.

2.- Información básica del servicio web
Una vez creados los archivos necesarios (de los que hablaremos más adelante), se nos muestra la pantalla de diseño del servicio web, que es idéntica a la que utilizaríamos para crear una página dinámica con ASP .NET. En realidad los servicios basados en ASP .NET, que son los que nos ocupan, son páginas web dinámicas que generan las respuestas XML con formato SOAP para los métodos que se le solicitan, invocando para ello a miembros de objetos residentes en el servidor. Para conseguir este efecto no hay que saber realmente cómo funciona SOAP ni una página web dinámica, ni ASP .NET. Como veremos enseguida, basta con establecer unos atributos en las funciones para que el compilador se ocupe de todo lo demás.
De momento, procedemos a otorgar a nuestro servicio web un nombre algo más interesante y descriptivo que Service1, que es el nombre que VS.NET utiliza por defecto. Para ello sólo debemos ajustarlo desde el diálogo de propiedades (ver Figura 2).

3.- Escribir y comprender el código de nuestro servicio
Al pulsar sobre el enlace Haga clic aquí para pasar a vista de códigos, se nos muestra el código fuente que constituye el esqueleto de nuestro nuevo servicio. Automáticamente se ha generado una definición de clase y hay una región de código contraída (que en la Figura 3 aparece ya abierta). Como podemos observar, nuestra nueva clase, que constituye el corazón del servicio web, hereda directamente de la clase SystemWebServicesWebService. Esta clase base ofrece la funcionalidad necesaria para que un servicio web pueda funcionar, pero afortunadamente, no es necesario que utilicemos ninguno de sus miembros. De hecho el que nuestra clase derive de SystemWebServicesWebService se convierte desde el punto de vista práctico en una cuestión anecdótica, pues podemos hacer caso omiso de este hecho al programar la funcionalidad del componente. El entorno ha generado para nosotros algunos métodos, como el constructor de la clase, o el método InitializeComponent, que como su propio nombre indica sirve para inicializar cualquier elemento común de nuestra clase (como una variable interna, por ejemplo). En el ejemplo no es necesario tocar ninguno de estos miembros autogenerados, por lo que es perfectamente lícito dejar la región contraída y no prestar mayor atención al código que contiene.
Aparte de la herencia mencionada, otra condición que debe cumplir cualquier componente .NET que vaya a actuar como un servicio web es disponer de, al menos, un método o función que incorpore el atributo WebMethod. Este atributo convierte automáticamente a cualquier miembro del objeto en un método directamente invocable a través de Internet. De este modo, para crear nuestro componente de pruebas sólo tenemos que escribir:
<WebMethod()> Public Function GetDateTime() As String
Return DateTime.Now.ToString()
End Function
como se puede observar en la parte inferior del listado de la Figura 3.
Sólo con esto ya disponemos de un servicio web totalmente funcional que podremos llamar desde cualquier programa en cualquier plataforma de computación. No es el componente más útil que hayamos visto, pero demuestra lo extremadamente fácil que es crear este tipo de servicios con Visual Studio .NET. Enseguida vamos a probarlo. El mencionado atributo WebMethod permite especificar algunos parámetros interesantes dentro de sus paréntesis. Si delante de la función GetDateTime de nuestro ejemplo escribimos:
<WebMethod(Description:=”Devuelve la fecha y la hora actuales”)>
veremos que además se le añade una descripción como ayuda cuando accedamos al componente directamente a través de un navegador. Del mismo modo, se puede conseguir una descripción para el componente completo usando el parámetro Description con el atributo WebService que el entorno añade automáticamente a nuestra clase. A través de este mismo atributo, usando el parámetro NameSpace podemos especificar el espacio de nombres que caracteriza los mensajes de nuestro componente. Es importante cambiar http://tempuri.org/. que es el espacio de nombres predeterminado, para de este modo distinguir perfectamente los mensajes de nuestro componente. Nosotros hemos usado http://idg .es/pcworld/webservices/ pero podríamos haber utilizado otro cualquiera que consideremos único.

4.- Probar nuestro flamante servicio web
Para probar el servicio web que acabamos crear ni siquiera es necesario disponer de un programa cliente que se encargue de llamar a los métodos expuestos. Con un simple navegador podemos apuntar hacia la URL de nuestro servicio y se generará de manera automática una página como la de la Figura 4, en la que se nos ofrece información sobre el servicio web y sobre cada uno de los mé

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información