En este post veremos un ejemplo muy simple de un servicio WCF y un cliente Silverlight para Windows Phone 7. Comenzamos creando un nuevo servicio WCF en Visual Studio 2010. La estructura del servicio es simple: una interfaz, una clase pública que implementa esa interfaz, y en el codebehind del servicio, los métodos que vamos a exponer, implementando la clase pública que creamos anteriormente. Probamos el servicio en el cliente de prueba, donde se agregan los métodos de manera automática.

En Visual Studio 2010 Express for Windows Phone creamos una Windows Phone Application con tres cajas de texto y un botón. Posteriormente necesitamos agregar la referencia del servicio que vamos a ocupar. Para esto hay que modificar el archivo Web.config de nuestro servicio para que acepte peticiones de otros dominios. Necesitamos agregar configuraciones para las secciones bindings y client. Así que usaremos SvcUtil.exe, que está en C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin para generar el código adicional del Web.config.

También colocamos dos archivos de configuración en la carpeta raíz del servicio. Veremos su contenido más adelante.

Con esto podemos proceder al código del botón que hemos puesto en la forma de nuestra aplicación. Asignamos los valores de las cajas de texto a un par de variables Double, creamos un BasicHttpBinding y un EndpointAddress con la dirección del servicio. Entonces, con una nueva instancia de Service1Client (la clase que se encuentra expuesta en el svc.cs) podemos acceder a los métodos asíncronos y pasarles las variables de tipo Double.

Con un EventHandler para nuestro método sumarNumerosCompleted le indicamos a nuestra aplicación de dónde obtener la respuesta al ser llamado sumarNumeros. Finalmente pasamos el valor de la variable “e” a la caja de texto del resultado y corremos la aplicación.

Mientras se carga el emulador, veremos el contenido de los archivos crossdomain.xml y clientaccesspolicy.xml. El primero permite al servicio funcionar con peticiones provenientes de cualquier dominio, mientras que clientaccesspolicy.xml se encarga de permitir el acceso de las aplicaciones cliente al directorio raíz del servicio.

crossdomain.xml

<?xml version=”1.0″?>
<cross-domain-policy>
<allow-http-request-headers-from domain=”*” headers=”*”/>
</cross-domain-policy>
clientaccesspolicy.xml
<?xml version=”1.0″ encoding=”utf-8″ ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=”*”>
<domain uri=”*”/>
</allow-from>
<grant-to>
<resource include-subpaths=”true” path=”/”/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Cuando haya terminado el deploy de la aplicación en el emulador lo probamos y listo.
Anuncios