Silverlight
è una
tecnologia di Microsoft, cross-platform e cross-browser, per lo sviluppo
delle RIA (Rich Internet Applications). Esso permette di definire interfacce
utente e animazioni per pagine Web molto accattivanti grazie alla possibilità
di poter integrare tra di loro il linguaggio XAML e la potenza del .NET
Framework per la parte di code behind con C# o con VB.Net.
In
realtà Silverlight non fornisce tutte le potenzialità del .NET Framework, ma la
necessaria porzione di funzionalità di cui si può aver bisogno per lo sviluppo
di applicazioni web. Anche
il CLR (Common Language Runtime) di Silverlight non è lo stesso del framework
.NET, ma è un piccolo plug-in cross-browser (6Mb per la versione 4.0 del
runtime) che si può scaricare
gratuitamente da internet.
Inoltre, nel caso in cui non fosse mai
stato installato
il runtime, sarà scaricato automaticamente, previa autorizzazione, al primo accesso fatto in una pagina web
sviluppata con silverlight. Il plug-in è funzionante sia sotto Windows sia
sotto MAC ed è in alcuni casi supportato da apparecchiature mobile che
utilizzano come sistema operativo Windows Mobile o Symbian^1 (S60 5a edizione
per cellulari quali N97, N97 mini o 5800 Xpressmusic)e (quando usciranno i
nuovi smartphone che lo monteranno, anche se per ora ci si può smanettare un
po’) Windows Phone, mentre per Linux bisogna scaricare l’implementazione open
source del CLR, Moonlight, sviluppato dal team di Mono.
Ancora
più fondamentale è che Silverlight, a differenza di altre tecnologie quali
Asp.net o Asp.net MVC, è client-side, quindi le applicazioni sviluppate con
essa sono installate direttamente sul client, di conseguenza, considerando uno
scenario in cui non avvengono richieste al server, i tempi di risposta della stessa
sono più rapidi, dal momento che qualsiasi tipo di operazione viene effettuata
direttamente nel browser del client. Tutto
questo non da problemi dal punto di vista della sicurezza perche' silverlight
gira in una sandbox.<o:p></o:p>
La
prima versione fu presentata il 4 settembre del 2007, ma se volessimo fissare
una milestone fondamentale per l’inizio dell’ascesa del progetto Silverlight,
potremmo identificarla con il 21 dicembre 2006, giorno in cui Microsoft
rilasciò una tecnologia che risultava essere un sottoinsieme della già più
conosciuta Windows Presentation Foundation. Proprio per questo motivo la prima
release di Silverlight fu chiamata WPF/E (WPF Everywhere).
Questa
versione di Silverlight ancora non era fornita del CLR, ma esponeva i dati con
delle API simili al DOM, fornendo così la possibilità di programmarne
l’interazione con javascript. Questa prima versione includeva anche un encoder
di formati video e una prima versione dell’interprete per il linguaggio XAML.
Nella
release 1.1 fu introdotta una prima versione del runtime, il vero è proprio
cuore di questa versione si componeva di tre parti:
· il presentation
core che conteneva l’integrazione dei browser, l’interprete del linguaggio
XAML e il supporto ai media,
· la Base Class Library, grazie alla quale, quindi, si aveva la
possibilità di usare una parte delle classi
base del .NET Framework con qualsiasi linguaggio da esso supportato,
· e
“last but not least” il già citato CLR.

Questo
cuore di silverlight era attorniato da tre framework quali presentation framework,
traducendo semplicemente dall’inglese e per dirlo in parole povere, tutto ciò
che riguardava la parte di presentazione, il data framework e le interrogazioni
dei dati, e il comunications framework per l’interfacciamento delle
applicazioni con l’esterno (es. I server).
Il
runtime di Silverlight fece Il salto di qualità con la presentazione della
versione 2.0 (rilasciata il 14 ottobre 2008), nonostante fosse considerata la
naturale evoluzione di Silverlight 1.1, il miglioramento del CLR e alcune introduzioni
la rendevano molto più completa e funzionale rispetto al predecessore, e, come
se non bastasse, anche se vennero fatte queste modifiche, la dimensione del
plug-in continuò a rimanere notevolmente “light”, solo 4,6Mb rispetto ai 4Mb
della versione 1.1.
Quasi
un anno dopo, per essere più precisi il 9 luglio 2009, Microsoft rilasciava la
terza versione di Silverlight, ancora una volta colma d’innovazioni. Con questa
release Microsoft, grazie alle migliorie nel campo del supporto a flussi
streaming (Smooth Streaming *), cerca di opporsi in maniera decisa a Flash.
Questa
piattaforma supportava anche il “Perspective
3-D”, una modalità di
implementazione 3D limitata ad una
visualizzazione prospettica degli elementi, ed introduceva effetti grafici da
poter applicare singolarmente ad ogni elemento discendente da “UIElement” (Pixel shader effects),
furono migliorate le performance video grazie ad un maggiore sfruttamento della
GPU, fu aggiunta la possibilità di modificare le immagini bitmap, potendo anche
modificare singolarmente i pixel, furono aggiunti anche di nuovi effetti per le
animazioni, nuovi controlli, e il navigation framework per permettere la
navigazione tra diverse pagine xaml, fu introdotto anche il “Binding Element to Element” *, il quale permetteva di bindare la proprietà
di un oggetto recuperandone il valore da un altro, e il “Binding Validation”, un sistema che consentiva di intercettare le
eccezioni sollevate nel caso in cui al variare del valore dei dati essi risultavano
non congrui con i tipi di valori consentiti , furono inserite delle nuove API
del namespace System.Windows.Messaging
che consentono la comunicazione tra più oggetti Silverlight nella pagina (Local
connection), ed infine una delle introduzioni più importanti, la possibilità di
creare delle “Out of Browser Application”
*,
applicazioni di silverlight che possono essere avviate direttamente dal
desktop.
Il
progetto Silverlight è arrivato alla versione 4.0, quest’ultima è stata
rilasciata il 15/04/2010 in concomitanza alla presentazione di Visual Studio
2010 e del framework 4.0.
Questa
più recente relaese della piattaforma introduce migliorie per lo sviluppo di
applicazioni “Out of Browser”,
l’aggiunta del supporto alla stampa, quindi l’introduzione dell’oggetto “PrintDocument” e l’uso dell’evento “PrintPage”. Sono stati introdotti nuovi
controlli quali la “RichTextBox”,
che permette di renderizzare il testo e di gestirne la formattazione, con la
possibilità di integrare elementi come immagini e altri oggetti, e l’oggetto “WebBrowser” per la navigazione tra le
pagine web, il “Paragraph” per la
formattazione del testo, che può contenere diversi oggetti, tra i quali il più
interessante è “InlineUIContainer”,
che permette di inserire dei controlli all’interno del testo. E’stato anche
introdotto l’evento RightMouseButtonDown
per il click del tasto destro del mouse e la proprietà AllowDrop per la gestione di trascinamento sul controllo UIElement.
Altre
novità assolute di Silverlight 4.0 sono la classe NetworkCredential, per l’accesso a risorse protette da username e
password, e la proprieta IpMulticast
per l’invio di messaggi contemporaneamente con il trasferimento di pacchetti
tramite il protocollo UDP con una connessione uno a molti. E ancora, è stato
introdotto il supporto alla Webcam e al microfono.
Infine
è giusto fare anche una piccola citazione, “piccola” perché l’argomento sarà
ripreso nei prossimi articoli, al MEF (Managed Extensibility Framework), il
framework per lo sviluppo di applicazioni componibili dinamicamente, che è stato
integrato nel Framework .NET 4.0, e che Silverlight 4.0 supporta.
Il
fatto che sia stato integrato il MEF in Silverlight 4.0, ha fatto in modo che
venissero accostati sempre più Silverlight e il design pattern M-V-VM
(Model-View-ViewModel), questo perché con Silverlight, come anche per WPF, lo
sviluppo di applicazioni componibili dinamicamente richiede obbligatoriamente
l’uso di M-V-VM. Sembra scontato dire, comunque, che questo design pattern
poteva essere tranquillamente usato con Silverlight anche prima della release
4.0.
Non
mi resta altro, per questo primo articolo, se non lasciarvi i riferimenti per
scaricare i tools di sviluppo di Silverlight 4.0 in Visual Studio 2010 (la
release candidate 2), la sdk di Silverlight 4.0, il runtime e i WCF RIA Services
per Silverlight 4.0 (la release candidate 2) dal link:
Silverlight
4.0 developer tools and runtime
*Questo argomento sarà ripreso negli articoli
successivi