Accesso ai dati in Silverlight 2.0

di Alessio Leoncini, in Silverlight 2.0, 30 settembre 2008

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

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.

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

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
maltra scrive:
Accesso ai dati in Silverlight 2.0

Articolo interessantissimo, veramente utile ... è servito a togliermi molti dubbi!
martedì 30 settembre 2008

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

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

TUTORIALS


IN EVIDENZA
MISC