Antes que nada, veamos que es un Servicio Web SOAP:
Creamos un nuevo proyecto que será el Servicio Web SOAP:
Supongamos que queremos implementar un sistema de estadísticas de ventas por sección que debe ser accesible a través de distintas aplicaciones, tanto aplicaciones web como de escritorio. Para ello, un Servicio Web SOAP es una solución perfecta.
Implementamos el método del Servicio Web que nos devolverá los datos necesarios, de la siguiente forma:
[WebMethod] public DataSet EstadisticasDeVentasPorSeccion(int seccion) { string conexion = "Data Source=localhost;User id=sa;Password=sa;Initial
Catalog=datos"; string cadSQL = "select * from estadisticas where seccion = @seccion"; da.SelectCommand.Parameters.Add("@seccion", SqlDbType.Int, 4).Value = seccion; da.Fill (ds); return ds; }
Luego, la estructura básica de un Método Web sería:
[WebMethod] public Tipo_Dato_Devuelto Nombre_Del_Servicio(Tipo_Dato Parametro, ...) { //Operaciones return Dato_De_Retorno; }
De esta manera podremos implementar tantos Servicios Web como queramos, teniendo en cuenta que si el nº es muy elevado sería mejor dividirlos en varios Servicios Web para no sobrecargar uno.
Para consumir un Servicio Web SOAP desde una aplicación tanto Web como de escritorio con Visual Studio .NET 2003, primero, agregamos la referencia:
En la pantalla que se nos abre, elegímos la opción Servicios Web del equipo local, seleccionamos el correspondiente de la lista que nos aparecerá y en la siguiente pantalla, no olvidemos dar un nombre de instancia para el Servicio Web en la aplicación:
El modo de trabajar de aquí en adelante con nuestro Servicio Web SOAP en la aplicación, será el siguiente:
private void Button1_Click(object sender, System.EventArgs e) { //Instanciamos la referencia al servicio declarandonos una variable //Como el método que implementamos en el servicio devolvÃa un- //DataSet, declaramos uno para recivir los retornos de las llamadas
//Los datos que enviemos al SOAP deben ser del mismo tipo de- //dato que allà hayamos declarado. Como allà declaramos que el
//dato que recibÃa era de tipo 'int', deberemos hacer aquà la //conversión de tipo de codigo.Text (string) a entero. ds = MiReferencia.EstadisticasDeVentasPorSeccion(Int32.Parse(codigo.Text));- //Una vez que ya tenemos nuestro DataSet con los datos que
//querÃamos, en adelante trabajamos con él normalmente.- //Por ejemplo:
DataGrid1.DataSource = ds; DataGrid1.DataBind(); }
Hay que tener en cuenta que si una vez añadida la referencia SOAP a nuestra aplicación añadimos nuevos métodos al servicio, deberemos volver a compilar el código del SOAP y posteriormente actualizar la referencia Web en nuestra aplicación:
Para más información consulte la referencia del MSDN.