Usare PRISM per creare Windows Store app

di Alessio Leoncini, in WinRT 8.1,

PRISM è la storica libreria di Microsoft in cui il team di Pattern & Practices illustra e distribuisce i più utili pattern architetturali per creare robuste applicazioni. Dopo WPF e Silverlight, è stata sviluppata anche per WinRT e con essa possiamo creare velocemente applicazioni di qualità, con supporto a tutte le funzionalità di Windows 8.1.

Realizzare un'app

Realizzare una Windows Store app significa costruire un software sul framework WinRT e sfruttare Windows 8 per creare un'applicazione immersiva, intuitiva e soprattuto immediata sia nell'utilizzo che nella reattività generale, un'app responsiva ed emozionale.

Per rispettare tutti questi requisiti fondamentali, WinRT espone un modello di applicazione e una serie di librerie proprio per agevolare la realizzazione di Windows Store app; tuttavia, nel rispetto della propria natura di frameowrk Core, WinRT ci mette a disposizione un insieme di oggetti di base con cui, come piccoli ma versatili mattoni, andare a costruire un nostro framework applicativo attraverso cui, infine, sviluppare la logica applicativa vera e propria.

Ed e' proprio nel dominio di framework applicativo che PRISM può dare robuste soluzioni a funzionalità che, altrimenti, dovremmo realizzare in proprio sostenendo tutto il ciclo di sviluppo, testing e manutenzione.Anche per lo sviluppo delle librerie che compongono PRISM il team ha seguito pattern (e quindi linee guida standard) che altri hanno studiato e consolidato, ed è proprio in questo approccio che dobbiamo riscoprire il modo migliore di sviluppare un software.

PRISM si sviluppa sopra la coppia di linguaggi ad oggi più diffusa per lo sviluppo con WinRT: C# e XAML, vediamo quali pattern archietturali sono implementati e quali scenari risolvono.

I pattern e le soluzioni applicate in PRISM

Una delle caratteristiche più importanti di XAML è l'engine di binding che permette la propagazione dinamica dei dati dall'interfaccia al codice, e viceversa. Il pattern che permette di sfruttare a pieno questa caratteristica è il Model-View-ViewModel. Dalla nascita di WPF abbiamo parlato molte volte di MVVM quindi non vi rimandiamo agli altri articoli. Ciò che è interessante è che in PRISM abbiamo delle classi che ci rendono quasi trasparente l'implementazione del pattern e nella fattispecie nell'associazione tra View e ViewModel.

Le classi ViewModel sono responsabili dell'esposizione dei dati alla View e per fare questo usano oggetti per accedere allo strato dati. Per questi oggetti ma anche per altri, in PRISM è applicato il pattern di Dependence Injection che, insieme a Unity, permette l'inject di istanze di oggetti risolvendo con un basso accoppiamento le reciproche dipendenze. Questo pattern trova la sua maggiore utilità nel creare un'app testabile e maggiormente manutenibile.

Event Aggregator: sempre nel contesto di manutenibilità e riutilizzo del codice le buone pratiche consigliano di ridurre le dipendenze tra ViewModel e più in generale tra parti separate dell'app. Con l'implementazione di Event Aggregator gli oggetti possono comunicare tra loro sottoscrivendosi a generici messaggi, anzichè specifici eventi di altri oggetti.

Oltre a questi e ad altri pattern, in PRISM troviamo anche implemetazioni specifiche per l'app life cycle che prevede la gestione degli stati suspend, resume e activation in cui può trovarsi un'app.

La responsività di una Windows Store app è data anche dalla semplificazione delle maschere per specifiche funzioni e ad una loro consultazione immediata attraverso una sorta di navigazione di stile browser internet. In PRISM grazie alla classe NavigationService possiamo spostarci da una view all'altra con semplici convenzioni.

Non ultimo e molto interessante è sicuramente l'approccio alla data validation (la validazione dei dati in input dall'utente) che in PRISM si sviluppa con una modalità precisa ed efficace.

Costi e benefici

L'applicazione dei pattern che abbiamo descritto ha un costo iniziale in termini di apprendimento e in alcuni casi anche di tuning per non avere degrado di prestazioni, ma realizzare un'app su cui un'azienda può appoggiare il proprio business è una cosa seria e deve essere sempre ponderato all'intero ciclo di vita che si vuole dare al software.

Se vi siente convinti che i pattern implementati in PRISM possano aiutarvi, vediamo come ci si costruisce sopra un'app.

Uno sguardo alla libreria

La libreria è sviluppata da Microsoft ed è distribuita attraverso NuGet e Codeplex, in cui possiamo trovare anche i codici sorgente in licenza MICROSOFT PATTERNS & PRACTICES LICENSE.

La libreria consiste in due assembly: Microsoft.Practices.Prism.StoreApps e Microsoft.Practices.Prism.PubSubEvents. Nelle rispettive pagine su MSDN possiamo trovare i dettagli delle singole classi.

Nella VisualStudioGallery possiamo trovare anche dei template di progetto per Visual Studio, con essi possiamo velocizzare lo startup con progetti di partenza già configurati; inoltre su Codeplex ci sono anche degli esempi Quickstart che ci fanno vedere singoli esempi di come sfruttare le feature della libreria.

Infine, nel Dev Center di Microsoft, abbiamo la possibilità anche di scaricare il codice sorgente di un'intera e completa Windows Store app in cui sono sfruttate a pieno le caratteristiche di PRISM compresi Unit test dei ViewModel, supporto a Design time, localizzazione, Settings e molto altro. Il codice di questa applicazione è veramente il modo migliore per capire come si può sviluppare una buona app.

Percorriamo i punti principali delle implementazioni.

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc