di Alessio Leoncini, in Silverlight 2.0, 30 settembre 2008
Al di là dell'esempio precedente, gli scenari dove si sfrutta appieno le potenzialità dei web service e di avere collezioni tipizzate di oggetti in risposta ad una chiamata remota sono nei contesti di DataBinding, è possibile infatti associare la collezione items dell'esempio direttamente come DataContext di un controllo nel quale viene fatto esplicito uso della Binding Markup Extension:
void menuService_GetItemsCompleted2(object sender, MenuWebService.GetItemsCompletedEventArgs e) { ObservableCollection<MenuWebService.MenuDataItem> items = e.Result; if (!e.Cancelled && e.Error == null) { foreach (MenuWebService.MenuDataItem item in items) { MenuItem link = new MenuItem(); link.DataContext = item; Menu2.Children.Add(link as UIElement); Menu2.UpdateLayout(); } } }
Il MenuItem è un UserControl personalizzato di questo tipo:
<UserControl x:Class="SilverlightItalia.Accessoaidatisilverlight2.MenuItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <HyperlinkButton x:Name="simpleLink" Content="{Binding text}" Foreground="{Binding foreground}" NavigateUri="{Binding url}" TargetName="{Binding targer}" FontSize="{Binding fontSize}"></HyperlinkButton> </UserControl>
Ancora più interessante è l'uso con un oggetto come ListBox al quale è specificato un DataTemplate:
<ListBox x:Name="Menu3"> <ListBox.ItemTemplate> <DataTemplate> <HyperlinkButton Content="{Binding text}" Foreground="{Binding foreground}" NavigateUri="{Binding url}" TargetName="{Binding targer}" FontSize="{Binding fontSize}"> </HyperlinkButton> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
void menuService_GetItemsCompleted3(object sender, MenuWebService.GetItemsCompletedEventArgs e) { ObservableCollection<MenuWebService.MenuDataItem> items = e.Result; if (!e.Cancelled && e.Error == null) { Menu3.ItemsSource = items; } }
Dall'associazione della collezione direttamente come ItemsSource della ListBox si ottiene un menu completo e personalizzabile con pochissime righe di codice.
- WCF Services
I web service WCF rappresentano l'evoluzione dei servizi ASP.NET ed incorporano dentro sè tutte le tecnologie Microsoft di intercomunicazione tra sistemi; la grande flessibilità di configurazione ha elevato WCF a naturale sostituto degli ASMX anche nel semplice ambito di accesso ai dati in Silverlight. In Visual Studio è presente un template di servizio WCF già configurato per la compatibilità con i protocolli supportati dal plugin.
In linea di principio nell'ambito applicativo di un progetto Silverlight, un servizio ASP.NET è molto simile ad un servizio WCF, quest'ultimo è da preferire per la maggiore raffinatezza di strumenti di serializzazione dati e per il complessivo modello di programmazione molto più sofisticato e personalizzabile. Inoltre la flessibilità di configurazione consente di condividere i servizi tra più applicazioni anche di diverso tipo e tecnologia in modo da realizzare una base comune per la distribuzione remota dei dati.
Tendenzialmente WCF ha anche maggiori prestazioni e a riguardo è interessante l'articolo comparativo presente su MSDN.
In Silverlight è possibile utilizzare il BasicHttpBinding il quale è il più semplice modello di elaborazione dati di WCF che non richiede autenticazione da parte del client e serializza nativamente le informazioni con lo standard SOAP 1.1.
Con l'aiuto dei tool di Visual Studio l'uso di un servizio WCF è del tutto analogo a quello di un ASMX, eseguendo "Add Service Reference" viene generata la classe proxy ed il file di configurazione con le specifiche di accesso; il proxy può essere utilizzato nello stesso modo illustrato nel precedente paragrafo.
E' possibile approfondire questa tecnologia iniziando da questo articolo e seguendo le pubblicazioni di WinFxItalia riguardo WCF.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Realizzare un sito in Silverlight 2.0: frontend e animazioni
- Deepzoom in Silverlight 2.0
- ADO.NET Data Service al servizio di Silverlight 2.0
- I controlli di Silverlight 2.0
- Hello Silverlight 2.0, again!
- Principi di programmazione in Silverlight 1.0
- 3, 2, 1: azione! Le animazioni in Silverlight
- XAML per Silverlight - Seconda parte
- XAML per Silverlight - Prima parte
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

















Difficoltà

Stampa
Download



Articolo interessantissimo, veramente utile ... è servito a togliermi molti dubbi!
Continua »»» | Rispondi »»»