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 (qui), Prism se ne esce con un “rating” non del tutto sufficiente (visti i tentativi falliti riportati qui e qui)
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