Crear y consumir Web Services con Visual Web Developer

Crear y consumir Web Services con el Visual Web Developer (y superiores) es tremendamente sencillo.

En este artículo vamos a crear paso por paso el típico Web Service al que le mandaremos nuestro nombre y nos devolverá un saludo. Una vez creado lo subiremos a una biblioteca de Servicios Web y lo consumiremos en nuestra propia aplicación... y en poco más de 5 minutos creamos y consumimos un sencillo Web Service.

Crear un servicio Web
1.- Abrir un nuevo proyecto con el Visual Web Developer.
2.- Creamos un nuevo fichero .asmx: File -> New File -> Web Service Template, y lo nombramos HelloWorld.asmx. Por costumbre, en los Web Service deshabilito que el código vaya en otro fichero separado.
3.- Tendremos algo como esto:

Upload/ws1.jpg

4.- Apenas vamos a cambiar nada, simplemente el Namespace del WebService y un poco la función, obteniendo esto:

Upload/ws2.jpg

5.- ¿¿¡¡Ya está el Web Service!!?? Sí, ya está. Ahora solo queda publicarlo en vuestra Web (obviamente con soporte para ASP.NE)T. Específicamente, este webservice lo podéis encontrar en http://www.subgurim.net/servicios-web/holamundo.asmx
Para que nuestro Web Service sea conocido y utilizado por la comunidad ASP.NET, lo publicaremos en la biblioteca de servicios Web de portal de ASP.NET en castellano: www.es-asp.net.


Consumir un servicio Web
Si crear un servicio Web ha sido sencillo, consumirlo lo es aún más:
1.- En cualquier proyecto Web -existente o creado para la ocasión- vayamos a WebSite -> Add Web Reference, obteniendo:

Upload/ws3.jpg

2.- Presionaremos sobre GO y nos pedirá que le demos un nombre de referencia. En nuestro caso lo llamaremos subgurim.Prueba
3.- Ahora, para ver como llamamos al WebService y nos devuelve el valor, creamos una página con un TextBox, un Button y una Label, de forma que cuando se presione sobre el Button, se le manda al servicio Web el contenido del TextBox, y éste nos devolverá el saludo personalizado.
El código vendría a quedar como:

pruebaHelloWorld.aspx
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>


pruebaHelloWorld.aspx.cs
    protected void Button1_Click(object sender, EventArgs e)
    {
        subgurim.Pruebas.HolaMundo prueba = new subgurim.Pruebas.HolaMundo();

        Label1.Text = prueba.HelloWorld(TextBox1.Text);
    }



Obteniendo el resultado esperado:

Upload/ws4.jpg

Y sí, ya está: no más de 5 minutos!!
Para crear un servicio Web más complejo no tiene más dificultad que cambiar el código de nuestro .asmx. Podemos devolver un DataSet, un fichero XML, una fecha, una matriz de números reales... lo que queramos!!