A meno di un anno dal rilascio di Silverlight 3, Microsoft si appresta alla pubblicazione di una nuova versione ricca di aggiornamenti, mirati a consolidare il ruolo del plug-in come robusta piattaforma per lo sviluppo di Rich Internet Application ad alto impatto, aumentando anche le possibilità di sviluppo di applicazioni desktop cross-platform. Nel seguente articolo analizzeremo le nuove funzionalità di questa versione, rilasciata attualmente in versione RC.
Nel corso del MIX di Las Vegas, Microsoft ha reso pubblica larelease candidate di Silverlight 4.0: la nuova versione del plug-in per lo sviluppo di applicazioni RIA. In avvicinamento alla RTW, questa versione consolida le nuove funzionalità di cui abbiamo parlato all'occorrenza dell'uscita della versione beta, ma introduce anche ulteriori novità frutto delle richieste del network di sviluppatori che utilizzano questa tecnologia.
Per iniziare a sviluppare con questa versione è necessario scaricare ed installare i Silverlight tools per Visual Studio 2010 (in versione RC): questi tools comprendono sia il nuovo runtime che i template per Visual Studio, oltre all'SDK ed alla documentazione in formato CHM.
Grazie ad una linea di analisi dei requisiti condivisa con i più illustri programmatori del mondo, possiamo dire che Silverlight accorcia a grandi passi la distanza che lo separa dai suoi competitor più importanti: Adobe Flash e Flex. In questa versione, ad esempio, sono state aggiunte alcune funzionalità mirate ad accrescere le potenzialità di realizzazione di applicazioni Out Of Browser (OOB), quindi di vere e proprie applicazioni eseguibili sul client dell'utente.
Applicazioni OOB sempre più complete
Una delle novità più importanti che riguardano le applicazioni OOB è la possibilità di esecuzione in un contesto di privilegi più elevati, full-trust, grazie al quale è possibile avere ulteriori possibilità di interazione con il pc che ospita l'applicazione. Per preparare un'applicazione ad essere eseguita in un contesto full-trust è sufficiente agire sul file OutOfBrowserSettings.xml sulle proprietà SecuritySettings e WindowSettings; ancora più semplicemente è possibile utilizzare Visual Studio, nella finestra delle proprietà del progetto, abilitando il flag corrispondente nel pannello delle impostazioni Out-Of-Browser.
Come possiamo vedere nella figura precedente, in un'applicazione full-trust si ha la possibilità di personalizzare la finestra dell'applicazione stessa direttamente dal pannello di configurazione: abbiamo la possibilità di rimuovere l'interfaccia predefinita legata allo stile del sistema operativo ed inserire, ad esempio, una nostra grafica. Grazie alla classeWindow abbiamo la possibilità di controllare anche le dimensioni della finestra, in modo da adattarla al layout del nostro progetto; inoltre, con la classe WindowState possiamo replicare le funzionalità di riduzione ad icona ed ingrandimento con nostri menu e pulsanti personalizzati.
Nel contesto di esecuzione full trust, abbiamo la possibilità di accedere al file system del pc che ospita l'applicazione: grazie alla classe Environment ed al metodo GetFolderPath possiamo accedere, in lettura ed in scrittura, alle cartelle dell'utente enumerate con la proprietà SpecialFolder di Environment stesso:
if (Application.Current.HasElevatedPermissions) { string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string filename = "test.txt"; string path = System.IO.Path.Combine(myDocuments, filename); if (File.Exists(path)) { string contents = File.ReadAllText(path); MessageBox.Show(contents); } }
In tale contesto abbiamo la possibilità di utilizzare alcune classi di IO come File, Directory, StreamReader e StreamWriter con cui lavorare per aggiungere interessanti funzionalità alla nostra applicazione.
Nelle applicazioni out-of-browser è possibile lanciare notifiche in prossimità della systray del sistema operativo utilizzando la classe NotificationWindow: possiamo personalizzare grafica e tempo di visualizzazione ed abbiamo la possibilità di forzare il focus dell'applicazione principale in modo da richiedere un'operazione dell'utente. Nonostante queste personalizzazioni, dobbiamo considerare questa classe per le proprie funzionalità di base: non è prevista infatti l'interazione diretta dell'utente sulla notifica, ed è a nostro carico, ad esempio, implementare un sistema di code di visualizzazione per evitare la sovrapposizione di più elementi.
Oltre a quanto abbiamo detto, sempre in ambiente ad elevati privilegi, abbiamo la possibilità di interagire con interfacce COM per accedere anche a risorse fisiche collegate al pc dell'utente: grazie alla classeAutomationFactory (namespace System.Runtime.InteropServices.Automation) possiamo aprire le nostre applicazioni OOB Silverlight a scenari di accesso diretto ad un database, così come ad applicazioni Office o ad altri servizi del sistema operativo. Nell'esempio seguente vediamo come possiamo accedere alle Microsoft Speech API per riprodurre messaggi di testo con il sintetizzatore vocale:
if (AutomationFactory.IsAvailable && Application.Current.HasElevatedPermissions) { dynamic voice = AutomationFactory.CreateObject("Sapi.SpVoice"); voice.Speak("messaggio"); }
L'interazione con interfacce COM, ovviamente, è limitata ai soli sistemi operativi Windows, quindi, nonostante il suo utilizzo possa aggiungere molte funzionalità alle nostre applicazioni, dobbiamo essere ben consapevoli che il loro impiego riduce la portabilità delle applicazioni, che non possono così essere eseguite sui sistemi Mac, vero valore aggiunto di realizzare applicazioni con il plug-in Silverlight.
All'interno di una applicazione OOB possiamo sfruttare il nuovo controlloWebBrowser per renderizzare il contenuto di una pagina HTML specificando semplicemente il suo Url: in questo modo potremmo addirittura ospitare oggetti Flash o di altri plug-in all'interno di una applicazione Silverlight. Possiamo utilizzare il risultato del rendering di pagina HTML anche come riempimento di una forma grazie a WebBrowserBrush: questo nuovo oggetto Brush usa come sorgente proprio un controllo WebBrowser di cui abbiamo appena parlato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.