Nov
19
Basandomi su un tutorial di Scott Gu, provo a realizzare una app in SL in grado di interrogare un web service pubblico e poi a visualizzare il risultato in modo carino.
Last.fm e’ la famosa community musicale tramite cui ognuno puo’ crearsi un profilo in base ai propri gusti musicali e interagire con gli altri … bla bla … insomma un perfetto esempio di applicazione web 2.0; tra le altre cose espone le proprie API come web services e utilizzero’ proprio una chiamata al loro web service per visualizzare quelli che sono i miei brani preferiti, invocando il metodo library.gettracks a cui appendo il mio username: http://ws.audioscrobbler.com/2.0/?method=library.gettracks
&api_key=b25b959554ed76058ac220b7b2e0a026&user=cdiscla
Nel mio progetto SL in C# creo una class contenente i campi che voglio prendere dal WS e visualizzare nella mia app SL.
namespace WS_LastFM_SLight
{
public class lastFM
{
public string name { get; set; }
public string url {get;set;}
public string image { get; set; }
public string author { get; set; }
public int playcount { get; set; }
}
}
All’avvio dell’applicazione SL richiamo il Web Service di last.fm:
string sWSUrl = “http://ws.audioscrobbler.com/2.0/?method=library.gettracks&api_key=b25b959554ed76058ac220b7b2e0a026&user=cdiscla”;
WebClient wsFM = new WebClient();
wsFM.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wsFM_DownloadCompleted);
wsFM.DownloadStringAsync(new Uri(sWSUrl));
Nella gestione dell’evento DownloadStringCompletedEventHandler avviene l’intervento di Linq:
private void wsFM_DownloadCompleted(System.Object sender, DownloadStringCompletedEventArgs e)
{
if(e.Error==null)
{
string result=e.Result;
DisplayTracks(result);
}
}
private void DisplayTracks(string sTracks)
{
XDocument xmlTracks = XDocument.Parse(sTracks);
//
var t = from track in xmlTracks.Descendants("track")
where track.Element("image")!=null &&
track.Element("image").Attribute("size").Value.Equals("small")
select new lastFM
{
name=((string)track.Element("name").Value).Trim(),
url = ((string)track.Element("url").Value).Trim(),
image = ((string)track.Element("image").Value),
playcount= (Convert.ToInt16(track.Element("playcount").Value)),
author=((string)track.Element("artist").Element("name").Value)
};
lastFMGrid.ItemsSource = t;
}
Il risultato puo’ essere visualizzato qui
I sorgenti, invece, sono qui.
Il fatto e’ che il tutto non e’ propriamente bello da vedere, nel prossimo articolo su SL cerchero’ di aggiustarlo esteticamente.
Ott
31
Hello Silverlight !
Filed Under Silverlight | Leave a Comment
La prima cosa da fare per realizzare una applicazione in MS Silverlight, e’ andare in questa pagina e scaricare e installare i tools per Visual Studio 2008.
Impostare nuovo progetto -> Silverlight -> Silverlight Application [HelloSilverlight]
Una nuova Silverlight Application contiene per default 2 files: App.xaml e Page.xaml con il relativo file di code-behind, tipicamente .cs o .vb [o altri linguaggi .net].
Il file App.xaml serve a gestire eventi a livello di applicazione (Startup, Exit, Exceptions..)
Page.xaml e’ caricato all’avvio dell’applicazione e al suo interno devono essere definiti gli oggetti su cui lavorare.
In questa prima applicazione verra’ definito un pulsante al cui click verra’ visualizzato un messaggio di saluto. All’interno del tag Grid, inserire un tag Button con gli attributi Name e la gestione dell’evento Click a cui viene associata una funzione definita nel code behind che visualizza una semplice message box.


In fase di compilazione del progetto, VS.NET genera, sotto bin/debug(o release) un file HelloSilverlight.xap; per incorporare qs applicazione nel browser sara’ sufficiente fare riferimento a questo file.
Per scaricare i sorgenti di questo esempio cliccare qui
