Webservice con información de app.config en web.config

Un título algo duro ¿no? Se trata de un problema común cuando trabajamos con Webservices. Al incluir la referencia del webservice con el que trabajamos tenemos que indicar la IP o el nombre del equipo que provee el servicio. Pero ¿Qué pasa cuando esa dirección cambia? Normalmente, que tenemos que recompilar la aplicación. Si esto hay que hacerlo en pocas ocasiones no hay problema, pero si los cambios son frecuentes lo indicado es hacer que esta dirección se pudiera configurar desde el web.config.

Esto es posible hacerlo de dos maneras, cada una con sus ventajas e inconvenientes. Las dos necesitan añadir una clave en el web.config:



La primera es utilizando la fuerza bruta. Cada vez que llamemos al Webservice cambiamos su URL. POr ejemplo:

service = new Acmeco.AcmecoService();
service.Timeout = 10000;
service.Url = ConfigurationSettings.AppSettings["MyWebServiceURL"];

(Ejemplo tomado de aquí: Setting Web Service References Dynamically )

Si llamamos al servicio en pocos sitios esta solución es completamente válida, pero si lo hacemos en muchos sitios puede ser una labor engorrosa.

Otra solución es cambiar la URL en la referencia que importa el IDE de .NET. Lo encontramos aquí:

Web References –> my_web_service –> Reference.map –> Reference.cs

Este archivo se genera automáticamente cuando añadimos la referencia así que ¡ojo! si volvemos importar la referencia porque el proveedor del servicio ha realizado cambios tendremos que volver a modificar el archivo. Una vez allí cambiamos:

this.Url = System.Configuration.ConfigurationManager.AppSettings["MyWebServiceURL"];

Si nos encontramos con que lo anterior nos da un error, tenemos que añadir la referencia System.configuration en las referencias.

Con esto tendremos un webservice cuya dirección podremos configurar dinámicamente desde el web.config

Probar Webservices

Es usual que las aplicaciones de escritorio se vean desplazadas por desarrollos web, y dentro de estos que se organicen en webservices. Estos son muy útiles a la hora de desarrollar la arquitectura de una aplicación descentralizada, pero son difíciles de testear.

Esa dificultad puede verse mitigada si usamos la siguiente aplicación:

SoapUI

Nos permite enlazar directamente con los servicios web que le indiquemos, creando plantillas cómodas de usar que nos permiten probar directamente nuestras aplicaciones. Al guardar automáticamente las pruebas que realizamos nos ahorra mucho trabajo.