by Sandro Vecchiarelli
26. November 2010 21:16
Cominciamo questa serie di articoli su Windows Phone 7 e partiamo dal mostrare come sia effettivamente semplice nell'ambiente di sviluppo VS2010 consumare un servizio WCF da un'applicazione Windows Phone 7. La prima cosa da costruire sarà quindi un serivzio WCF che espone dei semplici dati partendo da un modello dati...per esempio tipo NorthWind.

In questo caso ho inserito solamente la possibilità di interagire con l'entity 'Employees'. Abbiamo esposto due metodi che restituiscono una lista di Employees e un Employee a partire dal suo ID. Ecco il contratto nella parte Server:

Arriviamo adesso nella parte client e aggiungiamo un progetto Silverlight Windows Phone. La prima cosa che facciamo è aggiungere un riferimento al servizio appena creato. Proviamo dal dispositivo a fare una richiesta dal browser del wsdl corrispondente al servizio. Ci accorgeremo che il client utilizzerà un http binding basato su SOAP proprio come un tradizionale Web Service. Con tanto di chiamata ai metodi tramite il protocollo SOAP appunto.

Adesso prepariamo la main page a cui daremo un layout composto di un bottone per passare ad un'altra pagina per la visualizzazione di tutti gli Employees (PageAll.xaml nel codice). Nella mainpage metteremo anche una Combobox che però non trovate nella Toolbox. Il motivo è semplice: la combobox non rientra nella convenzione di costruzione delle interfacce grafiche WP7 così come definite nel Windows Phone Design System - Codename Metro. Questo sistema di convenzioni grafiche permette a tutte le applicazioni di avere uno standard qualitativo molto elevato. Comunque la combobox è possibile inserirla e popolarla con una chiamata asincrona al servizio che mi restituisce dei dati di tipo ItemSourceEmployee, semplici oggetti con nome e ID dell'Employee.

Alla scelta dell'Employee si va nella pagina dettaglio (SingleEmployee.xaml) che mostrerà le caratteristiche dell'employee. Anche nella pagina contenente la lista degli employees la chiamata è assolutamente asincrona. Ci si sottoscrive al gestore di evento e si catturerà l'evento completed con una callback in cui utilizzeremo il risultato ottenuto. Il risultato definitivo è questo

Il codice di questo post lo trovate qui:
SV_Blog.rar (8,39 mb)