Il processo di bootstrapping di un’applicazione WPF con Caliburn.Micro

Nel post precedente abbiamo elencato una serie di framework/toolkit utili per il supporto allo sviluppo di applicazioni WPF/SL/WP/W8. Tutti questi framework, tranne MVVM-Light se non sbaglio, hanno il concetto di bootstrapping dell’applicazione, ovvero di setup, configurazione e avvio.

Questa funzionalità è tanto importante, quanto critica: maggiori sono le facilities che il toolkit ci mette a disposizione, molto meno codice di plumbing siamo costretti a scrivere. Questo però è uno dei primi punti che possono darci feedback immediati su quanto bene possa essere scritto un toolkit. Il framework scelto deve essere a supporto e non vincolare in scelte/implementazioni. Già da questo, come ho avuto modo di scrivere già in passato, Prism se ne esce con un “rating” non del tutto sufficiente

In questo post, vedremo come Caliburn.Micro approccia il problema.

Per prima cosa installiamo, tramite nuget, il package “Caliburn.Micro”

Creiamo ora una coppia “view” – “viewmodel”, ponendo particolare attenzione al fatto che i nomi devono, se vogliamo sfruttare out-of-the-box il sistema di convenzioni messo a disposizione dal toolkit, seguire il pattern “XxxView” – “XxxViewModel”. Nel nostro caso ShellView e ShellViewModel, come mostrato nell’immagine seguente:

Caliburn.Micro, così come Radical, sfrutta pesanetemente il paradigma “convention over configuration” per semplificare drasticamente la vita allo sviluppatore, fornendo, praticamente a costo zero quasi tutta l’infrastruttura per fare wire-up dell’applicazione. Questa feature, è una delle discriminanti che ci hanno fatto preferire questi toolkit agli altri. Il livello di customizzabilità delle convenzioni, che valuteremo nei prossimi post per entrambi i toolkit, è uno dei parametri che ci permetteranno di valutare la bontà (o meno) dei framework in oggetto.

Tornando a noi, manca vermante poco, per poter avviare, finalmente, la nostra applicazione: il bootstrapper. Con il seguente snippet di codice e la customizzazione dello xaml dell’applicazione abbiamo soddisfatto i requisiti minimi per poter integrarci e iniziare a sfruttare le potenzialità di Caliburn.Micro

Premiamo F5, et-voilà l’applicazione magicamente parte senza aver fatto o configurato nulla di particolare.

Nel prossimo post della serie vedremo se e come approcciare lo stesso problema con Radical