Vista UX: WPF e Windows

Windows Presentation Framework (WPF) sono le nuove API riguardanti l’interfaccia utente per creare applicazioni su Windows. Prima di WPF il programmatore utilizzava funzioni Win32 (cioè unmanaged) per creare e manipolare le finestre sullo schermo (compresi i controlli come i pulsanti, le listbox, ecc.). Magari queste funzioni erano utilizzate da un framework come MFC o Windows Forms (in .NET).

Con WPF è stato introdotto un nuovo sottosistema grafico che è parallelo a quello preesistente. In altri termini un pulsante visualizzato su una applicazione classica (ad esempio Office 2007) e un pulsante visualizzato all’interno di un programma WPF non sono la stessa entità. WPF viene ospitato all’interno del sistema di finestre classiche (ed in effetti Windows fornisce funzionalità per interfacciare i due mondi). Microsoft per realizzare questo ha dovuto risolvere diversi problemi. Ad esempio la coda dei messaggi di WPF si aggancia a quella di Windows classico. Windows è in grado di ospitare quindi le nuove applicazioni WPF. Ma una applicazione WPF può anche essere ospitata in altri ambienti: nel web browser (non solo IE ma anche altri) e nel Media Center.  Può anche essere ospitata in una applicazione scritta ad hoc grazie a delle API unmanaged messe a disposizione al programmatore.

WPF è composto da una serie di classi .NET che, ovviamente, girano sul CLR (Common Language Runtime) e da una parte di codice nativo unmanaged denominata milcore (Media Integration Layer Core) che utilizza il sottosistema DirectX per lavorare con la scheda grafica.

WPF e le tecnologie su cui è basato, sono estensibili. Questo insieme di funzionalità espone diverse API. Pablo Fernicola, un signore che lavora in Microsoft proprio su WPF, in questo post del 21 marzo 2006 che vi invito a leggere, espone molto bene la struttura, presenta un diagramma chiarificatore e parla dei punti di estensione. Su alcuni di questi elementi tornerò quando parlerò della programmazione.

WPF può funzionare anche su XP e 2003 e quindi uno si chiede quali siano le differenze con la versione che gira su Vista. Dal punto di vista del programmatore non molte: scrivere programmi su XP o su Vista è più o meno la stessa cosa ma Vista ha una serie di ottimizzazioni molto interessanti grazie all’uso del DWM e del WDDM. Tim Sneath, un’altro signore che lavora in Microsoft, ha un bel post del 5 gennaio 2007 che parla proprio di questo argomento. Riassumendo (in italiano) i punti evidenziati nel suo post:

  • Con DWM e un driver WDDM la RAM video è virtualizzata
  • Con un driver WDDM si ha anti-aliasing 3D
  • Altri programmi possono trarre vantaggi dall’integrazione del MIL (Sneath cita il Magnifier ma, secondo me, è più interessante l’accenno che il gruppo del Terminal Server ha fatto sul rendering remoto: ne ho già parlato qui il 15 gennaio 2007)
  • Le animazioni WPF dovrebbero essere più fluide con il DWM abilitato 
  • Le API del tablet PC hanno alcune caratteristiche specifiche su Vista relative al supporto delle gesture.
  • Se si usa una applicazione remotizzata su macchine Vista con il DWM, il rendering del lato client è accelerato dall’hardware.

Ovviamente ci sono poi altre differenze. Per esempio un programma su Vista può sfruttare le altre nuove caratteristiche del sistema (ad esempio i nuovi Common Dialogs). Visto che sto parlando di UX anche su questo dovrò tornare.

Un appunto: dal diagramma di Fernicola si evince chiaramente che tutto il sistema non è relativo solamente alla grafica dell’interfaccia ma anche a XPS, una specifica fatta per creare documenti (anche se definirli documenti è limitativo – e infatti, ad esempio, Romeo Pruno parla di pacchetti di contenuti).

Per chi conosce i sistemi grafici, avere un meccanismo di rappresentazione dei documenti è normale. Il vecchio OS/2 nel sottosistema GPI definiva anche il formato metafile (insieme di comandi grafici) utilizzato poi dallo spooler di sistema per stampare. In questa architettura grafica ovviamente i metafile non bastano anche perchè oggi non basta semplicemente stampare. E’ quindi necessario avere un sistema di descrizione della pagina assolutamente coerente tra il sistema grafico video e quello “documentale” (per stampare o distribuire). Chiedetevi quale altro famoso sistema desktop si comporta in questo modo e di quale azienda ha preso la tecnologia in licenza.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: