Universal App
Abbiamo sperimentato il nuovo modello di app universale con Visual Studio Express 2013 Update 2 RC, la versione gratuita dell’ambiente di sviluppo, che si può scaricare da www.microsoft.com/en-us/download/details.aspx?id=42305. Ricordiamo che conviene aggiornare la macchina di test a Windows 8.1 prima di procedere.
Fra le applicazioni proposte dalla finestra di dialogo dei nuovi progetti è disponibile una collezione di modelli di applicazione universale. Abbiamo scelto un’applicazione di tipo Hub, che ci pare quella più flessibile.
La soluzione creata dal wizard, contiene un progetto per applicazioni Windows 8.1, uno per applicazioni Windows Phone 8.1 e un progetto condiviso. Manca un progetto per applicazioni destinate al desktop classico di Windows, mentre è stata promessa la compatibilità anche con Xbox One al Microsoft Build, la conferenza per sviluppatori che si è tenuta agli inizi di aprile. Il progetto condiviso contiene tutta la logica di navigazione dell’applicazione, espressa dalla classe RelayCommand, ben familiare a chi ha sviluppato con Wpf e Xaml, e tutte le classi derivate contenute in una classe NavigationHelper. Alcune sezioni del codice sono specifiche per un sistema operativo, abbiamo trovato diverse sezioni protette da un #if WINDOWS_PHONE_APP.
L’approccio con codice condizionale ha senso perché si mantengono semplici le interfacce, non si carica la struttura delle classi di eccessivi pattern e – probabilmente – si anticipa un futuro in cui una maggiore integrazione fra le piattaforme richiederà meno specializzazione.
Nell’editor c’è un elenco a discesa che permette di stabilire il contesto in cui si sta editando un file, mettendo a fuoco una piattaforma specifica. Questo si riflette nel codice mettendo in grigio le aree di codice escluse dalla compilazione condizionale. Altri elementi a fattor comune sono un dizionario osservabile, ObservableDictionary, che consente l’invio di eventi all’interfaccia utente, un SuspensionManager, che gestisce il ciclo di vita dell’applicazione, un DataModel, che incapsula l’accesso ai dati e un elenco di stringhe pronto per l’internazionalizzazione.
Nei progetti specifici per piattaforma, invece, troviamo la pagina principale, le pagine di sezione e quelle di dettaglio per la lista di oggetti per cui sono pensate le applicazioni hub. Naturalmente, le pagine di interfaccia sono ottimizzate per fattori di forma diversi e hanno layout per dimensioni radicalmente diverse dello schermo.
Il modello ci è parso solido e ben ponderato e crediamo sia efficace nella sua missione di essere di aiuto e ispirazione per gli sviluppatori. Ovviamente, conviene continuare a tenere la logica applicativa nella parte condivisa del codice espandendo lo scheletro di comandi e eventi e legandolo alla logica di business.
> Continua a leggere: Visual Studio 2013 update 2