1 ottobre 2007

WPF e Silverlight

Qualche settimana fa ho avuto modo di seguire una presentazione in casa Microsoft di Windows Presentation Foundation e Silverlight, due framework, orientati alla grafica, piuttosto interessanti, almeno dal punto di vista delle potenzilità.

Il primo, WPF, è già in giro da un pò, ed è destinato alle applicazioni client standalone. Si tratta di una parte del framework 3.0, da poco rilasciato, ma già in macinazione da 4 anni, che permette di disegnare interfacce ad alto impatto grafico, tramite codice XAML (un'estensione XML).

WPF permette di gestire in maniera rapida e semplice gran parte delle rogne che prima andavano gestire nel code behind, tutti gli eventi legati solo all'interfaccia utente.

WPF può veramente ammaliare per le sue potenzialità: utilizzo di animazioni, oggetti 3D, template, styles, e l'integrazione del concetto di ereditarietà nei componenti dell'interfaccia.

L'aspetto chiave di WPF è quello di concedere a ogni componente dell'interfaccia una prorprietà Content, che a differenza delle vecchie interfacce del framework 2.0, accetta in input un tipo Object. Questo permette di creare ad esempio un bottone che ha all'interno un video, piuttosto che un oggeto 3D, al posto della solita stringa o immagine.
Utilità dell'esempio a parte, credo sia una tecnologia da prendere in considerazione, soprattutto se dovete far collaborare grafici con degli sviluppatori, senza farli scannare, e per cercare di portare (finalmente) anche le applicazioni .NET in un contesto MVC.

Unico limite di WPF sono le applicazioni XBAP, cioè il tentativo di portare applicazioni WPF su web. Naturalmente il limite per questo genere di applicazione di WPF è enorme. Le applicazioni XBAP infatti sfruttano pesantemente la macchina client, essendo di fatto degli eseguibili che vengono fatti girare in una sendbox che incapsula l'esecuizione del programma.

Questo di fatto rende le applicaizoni WPF per il web ad essere degli smart client che necessitano del framework 3.0 sulla macchina client. In pratica vanno bene solo per applicazioni intranet.

Ma come utilizzare WPF su Internet?
Ecco la soluzione proposta da Microsoft: Silverlight.

Cos'è Silverlight? E' un mini-framework, sotto forma di plugin, che permette di visualizzaare contenuti web con grafica vettoriale e molto altro ancora... praticamente la copia di flash, che sfrutta WPF.

Attualmente Silverlight è alla versione 1.0. Questa versione non sfrutta il framwork 3.0, ma sfrutta JavaScript, e di fatto è un abisso da quello che sarà la nuova versione di Silverlight, così come la ha pensata Microsoft. La versione 1.1, attualmente in Alpha, sfrutta già alcune delle potenzialità di WPF, e può già essere sperimentata in maniera proficua.

Se però andate a vedere quanto Microsft ha promesso di inserire nella versione finale della release 1.1, vi accorgerete quanto ancora manca all'attuale versione e quando Microsoft stia puntando su questo tipo di tecnologia. Unica differenza già dichiarata tra WPF e Silverlight, a cui non si potrà porre rimedio, è la mancanza del supporto al 3D, che naturalmente su WPF sfrutta DirectX, e che non potrà, per ovvi motivi, essere integrato nel plugin di Silverlight.

Prossimamente spero di riuscire ad avere un po di tempo per darvi qualche dritta in più (magari quando mi arriverà, finalmente, il materiale promesso durante la conferenza).
Al momento vi posso consigliare di inziare a dargli un'occhiata e magari fare qualche prova, tenendo un occhio sul progetto Moonlight, progetto che sta portando all'implementazione di un plugin per Silverlight su piattaforma Linux (unica piattaforma attualmente non prevista tra quelle supportate dal plugin ufficiale Microsoft).