ADO.NET Data Service al servizio di Silverlight 2.0
di Marco Leoncini, in Silverlight 2.0, 28 ottobre 2008
Archiviato in: .NET Framework, .NET Framework 3.5, LINQ, Silverlight, WCF Data Services, Web Service, XAML, ADO.NET, Architettura, Silverlight 2.0
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"
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Pagina 1
- Pagina 3
- Pagina 4
- Pagina 5
- Pagina 6
- Pagina 7
- Pagina 8
- Pagina 9
Sullo stesso argomento
-
Applicazioni Silverlight con il cloud computing su Windows Azure
-
Aggiungere interattività al controllo Chart di Silverlight 3.0
-
Realizzare un sito completo in Silverlight: una galleria fotografica
-
Supporto audio e video in Silverlight 3.0
-
Effetti speciali sulle immagini in Silverlight 3.0
-
Anteprima di Expression Blend 3.0
-
Le novità di Silverlight 3.0 beta 1
-
Realizzare un menu riutilizzabile utilizzando DataTemplate e DataBinding
-
Un tocco di stile alle applicazioni Silverlight: style e template
-
Multithreading in Silverlight 2.0

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.