Redazione
a- a+

Gestione degli errori

Silverlight e la gestione degli errori

Quando si scrive del codice è vitale poter gestire qualsiasi potenziale errore che potrebbe verificarsi eseguendo l'applicazione. Sebbene un'applicazione possa funzionare perfettamente nelle mani di uno sviluppatore, non si può predire come l'utente utilizzerà l'applicazione, quali altre applicazioni saranno eseguite contemporaneamente sulla macchina dell'utente e quali altri fattori potranno influenzare l'affidabilità e la correttezza dell'applicazione.

Di conseguenza la maggior parte dei linguaggi di programmazione includono meccanismi per la gestione degli errori. Gli errori generalmente si verificano quando un'applicazione dipende da qualche altra risorsa controllata o fornita esternamente. Ad esempio un utente potrebbe fornire dei dati non validi all'applicazione o il tentativo di connettersi ad un database o di utilizzo di un'altra risorsa potrebbe fallire. Il codice deputato alla gestione degli errori dovrebbe essere messo nei punti in cui gli errori potrebbero verificarsi.

Ci sono tre categorie di errori:

  1. errori di compilazione: avvengono per errori di sintassi nel codice, ci si accorge della loro presenza quando si compila l'applicazione e dal momento che un'applicazione non compila fintanto che ci son questi errori, questi verranno corretti prima che l'utente utilizzi l'applicazione;
  2. errori di esecuzione: sono errori che avvengono a runtime, per esempio quando ci si connette ad un database e questo non è disponibile.
  3. errori logici: sono gli errori più difficili da identificare poiché essi possono anche non fermare l'esecuzione dell'applicazione e produrre risultati inattesi.

La maggior parte dei linguaggi compatibili con .NET forniscono blocchi try, catch e finally. Anche JavaScript fornisce tali blocchi. Quando il codice all'interno di un blocco try incontra un errore, l'esecuzione dell'applicazione si ferma e l'applicazione cerca un blocco catch sviluppato per gestire il tipo di errore che è avvenuto. Quando lo trova, esegue il codice all'interno del blocco catch. Il blocco finally è opzionale ma viene usato per fornire del codice che viene eseguito indipendentemente dal fatto che si verifichino errori o meno nel blocco try.

Debugging e Testing

Le attività di debugging and testing in Silverlight possono verificarsi in due possibili scenari: il primo riguarda un'applicazione Silverlight che esegue del codice solo lato client, mentre il secondo riguarda un'applicazione che sfrutta un Web service. Abbiamo già trattato in precedenti articoli come configurare l'ambiente di sviluppo per testare un'applicazione Silverlight che faccia uso di un Web service attraverso Visual Studio 2008.

Il debugger di Visual Studio 2008 è molto potente ed è leader a livello industriale, includendo talmente tante funzionalità che la maggior parte degli sviluppatori non utilizzerà nemmeno. Ad ogni modo la funzionalità basilare e più semplice di tale debugger è la possibilità di inserire dei breakpoint nel codice. Quando l'esecuzione del codice incontra tali punti, si ferma permettendo di analizzare dettagliatamente l'esecuzione dei passi successivi. Nella figura sottostante viene visualizzato il debugger di Visual Studio 2008 con un breakpoint impostato nel codice.


Fig 1: impostazione di un breakpoint nel codice

 

Il Deploying

Una volta che l'applicazione è stata testata a fondo e viene ritenuta stabile, l'applicazione è pronta per esser distribuita. Il deployment è il processo di installazione e configurazione dell'applicazione per l'uso produttivo e può consistere semplicemente nel copiare i files dell'applicazione in una posizione locale oppure nel creare un programma d'installazione che gli utenti possono scaricare e installare.

Nella maggior parte dei casi, un'applicazione Silverlight ha bisogno semplicemente di essere copiata su un Web server e deve essere raggiungibile via Web dagli utenti.

Windows Live Silverlight Streaming Service

Nel tentativo di supportare designer e sviluppatori Silverlight, Microsoft ha creato uno spazio online per ospitare le applicazioni Silverlight al di sotto della suite di tools Windows Live. Il servizio Windows Live Silverlight Streaming è liberamente utilizzabile.

Uploading delle applicazioni nel servizio Silverlight Streaming

Il primo passo nel processo di utilizzo del servizio Silverlight Streaming è ottenere un id e una chiave realtivi ad un account. Per sottoscrivere un account al servizio Silverlight Streaming, avrete bisogno di un Windows Live ID. Se già disponete di tale ID, potete loggarvi semplicemente nel servizio di streaming e generare id e chiave necessari, altrimenti createvi un Windows Live ID direttamente sul sito del servizio di streaming.

Una volta ottenuti ID e chiave, siete pronti per caricare sul servizio la vostra applicazione. Ad ogni modo, distribuire l'applicazione a tale servizio può essere più complesso di un semplice upload: un'applicazione potrebbe essere convertita in maniera tale che possa funzionare con il servizio di streaming. Bisogna quindi modificare qualsiasi pagina che carichi del codice Silverlight e che includa un riferimento allo script Silverlight.js e controllare che i requisiti per Silverlight siano soddisfatti. Di default, questo script è posizionato nel progetto locale ma un'applicazione streaming dovrà prenderlo da una posizione online.Il riferimento allo script è inizialmente così:

ma dev'esser aggiornato come segue:

<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script>

Successivamente anche il codice che sta dietro a tutti i file HTML deve essere modificato allo stesso modo. Questi files conterranno una funzione denominata createSilverlight. La funzione inizialmente è così composta:

{Silverlight.createObjectEx({ source: "Page.xaml" ,parentElement: document.getElementById("SilverlightControlHost"),id: "SilverlightControl" , properties: {width: "100%" , height: "100%" , version: "1.1" ,     enableHtmlAccess: "true"},  events: {}}

ma va sostituita con la seguente:

function createSilverlight()  {  Silverlight.createHostedObjectEx({    source: "streaming:/19178/MyFantasyPicks" ,    parentElement: document.getElementById("SilverlightControlHost"),    id: "SilverlightControl"  });  }

La nuova versione preleva la vostra applicazione Silverlight dal servizio di streaming usando la chiave precedentemente creata ed elimina qualsiasi paramentro addizionale, spostandoli nel manifesto dell'applicazione. Aggiungete un nuovo documento XML al progetto e nominatelo come manifest.xml. I contenuti di tale file assomiglieranno al seguente listato:

    Page.xaml    1.0    100%    100%    false    #FFFFFF    24    false    

 

Il codice soprastante dice che il primo file XAML che verrà eseguito è Page.xaml e che l'altezza e la larghezza dell'applicazione Silverlight dovrebbe essere 100% per entrambe. Il manifesto viene usato dal servizio di streaming file per determinare come caricare ed eseguire l'applicazione.

Poi bisogna creare un archivio zip che contenga il cuore dell'applicazione Silverlight. Per crearlo, fate click son il tasto destro del mouse sul progetto nel pannello Solution Explorer e selezionate Open Folder in Windows Explorer. Create un nuovo archivio in questo punto e aggiungetevi i file Page.xaml, manifest.xml e l'assembly del progetto (dalla cartella ClientBin).

Creato l'archivio, l'applicazione è pronta per essere caricata. Aprite la home page del servizio di streaming e selezionate Manage Applications. Selezionate l'opzione Upload a Silverlight Application. Nella pagina che viene presentata, assegnate un nome all'applicazione, selezionate il file zip creato al passo precedente come file da uploadare e cliccate su Upload. Al completamento dell'upload, viene mostrata una pagina informativa con le opzioni per il testing e l'esecuzione dell'applicazione., come mostrato nella figura seguente.


Fig 2: testing ed esecuzione di un'applicazione su Windows Silverlight Streaming

Infine, vi sono opzioni sulla stessa pagina per testare l'applicazione. Si può testare l'applicazione semplicemente creando una pagina HTML con il codice fornito in precedenza.