ADO.NET Data Service al servizio di Silverlight 2.0

9 pagine in totale: <<Indietro 1 2 3 4 5 6 [7] 8 9 Avanti >>

Silverlight come client

E' il momento di abbandonare il browser e passare ad un vero e proprio client, che per noi non può che essere Silverlight.
Aggiungiamo quindi un nuovo progetto, avendo l'accortezza di indicare la Web Application creata per il servizio come sito host per Silverlight.

Facciamo click con il tasto destro sul progetto Silverlight appena creato e aggiungiamo il riferimento al servizio (Service Reference), assicurandoci che stia girando: in questo modo VS inserisce per noi tutti i riferimenti agli assembly necessari e crea le classi per rappresentare ogni entità come oggetto del CLR.

Le due classi principali per interagire con ADO.NET Data Services sono DataServiceContext e CreateQuery. La prima si occupa di mantenere lo stato ed eseguire il tracking delle entità per offrire il supporto alla concorrenza ottimistica, mentre la seconda è responsabile della creazione delle query di interrogazione per il servizio.

Spostiamoci sul progetto Silverlight e apriamo il file Page.xaml, aggiungiamo un semplice controllo ListBox, assegnando come nome "myListBox" ed impostando la proprietà DisplayMemberPath sul valore "ContactName". Apriamo il codebehind e nel costruttore creiamo una nuova istanza della classe DataServiceContext, specificando l'URL del servizio e tramite il metodo BeginExecute inoltriamo la nostra richiesta al servizio, specificando l'URL, il metodo da richiamare una volta che i dati sono pronti per essere consumati dal client ed infine il contesto.

public Page() 
{ 
  InitializeComponent(); 
 
  DataServiceContext _dataServiceContext = new DataServiceContext(new Uri("NorthWindWebDataService.svc", UriKind.Relative)); 
   
  _dataServiceContext.BeginExecute<Customers>(new Uri("Customers", UriKind.Relative),LoadCustomerCallback, _dataServiceContext); 
}

Il metodo LoadCustomerCallback riceve come parametro un'istanza del tipo IAsyncResult, che rappresenta il risultato della richiesta inoltrata al servizio. Eseguendo il cast della proprietà AsyncState a DataServiceContext e invocando il metodo EndExetute possiamo impostare il risultato come sorgente degli elementi della ListBox.

private void LoadCustomerCallback(IAsyncResult asyncResult) 
{ 
  DataServiceContext _dataServiceContext = asyncResult.AsyncState as DataServiceContext; 
  myListBox.ItemsSource = _dataServiceContext.EndExecute<Customers>(asyncResult); 
}

Il risultato è che avremo la lista di tutti i Customers caricata dentro la nostra applicazione Silverlight.

E' interessante notare che l'URL passato al metodo BeginExecute, che non è nient'altro che il percorso che digitavamo nel browser negli esempi precedenti. Se proviamo infatti a sostituire il path "Customers" con "Customers?$filter=City eq 'London'" nella ListBox verranno visualizzati solo i Customers la cui proprietà City è uguale a "London"

9 pagine in totale: <<Indietro 1 2 3 4 5 6 [7] 8 9 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

TUTORIALS
TOP TEN ARTICOLI
ARTICOLI VIA E-EMAIL

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

MEDIA
IN EVIDENZA
MISC