Accesso ai dati in Silverlight 2.0

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

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