Catel: molto di più un framework MVVM

29 ott 2013 13.34

_Logo Tra i molti framework MVVM disponibili quello che mi ha colpito maggiormente è Catel: non solo per il suo approccio completo e “puro” a MVVM, ma anche perché offre molto di più caratterizzandosi come una ricca libreria enterprise molto flessibile. Da pochi giorni è disponibile la versione 3.7.

Catel e i progetti subordinati sono completamente gratuiti e open source. E’ inoltre possibile ottenere supporto professionale. Ecco un elenco delle risorse disponibili in rete:

La versione corrente è la 3.7, pubblicata il 18 ottobre. Per l’utilizzo è consigliato l’uso di NuGet, mentre il setup disponibile tra i file della versione è utile per installare gli snippet e i template (comunque scaricabili a parte). Per le ultime novità fate riferimento al post di presentazione.

Le piattaforme supportate sono: WPF, Silverlight, Windows Phone 7 e 8, Windows 8 e le Portable Class Library. La documentazione è completa, il team molto attivo e gli esempi sono tanti ed esaurienti. L’utilizzo e il supporto nativo alle Unit Test ne garantiscono una buona qualità. Il target di riferimento, a detta degli autori, è lo sviluppo di applicazioni professionali (LoB applications).

Per quanto riguarda la struttura abbiamo due componenti base:

  • Catel.Core: il cuore della libreria che può essere utilizzata in qualsiasi progetto e non solo in applicativi Windows. Molte le funzionalità: IoC container, data objects, validation, memento (il design pattern che prevede l’abilità di ripristinare un oggetto al suo stato precedente), message mediator, argument checking e altre.
  • Catel.MVVM: implementazione del pattern MVVM con i tipici oggetti ViewModelBase, Command, Services e via dicendo.

Vi sono poi progetti “secondari” che estendono il cuore della libreria. Infatti, una delle caratteristiche vincenti di questo progetto è la sua estendibilità e la sua integrazione con altri framework. Riporto lo schema della struttura attuale in cui si nota l’interazione con Prism, CSLA.NET, EF 5 e FluentValidation:

Architecture

Come accennato le funzionalità disponibili sono tante: IoC container, validation, logging, diagnostics, reflection, MVVM, user controls, etc. Nella guida sono disponibili utili tabelle per verificare la disponibilità per le varie piattaforme (totali per WPF e .NET 4/4.5 che è la piattaforma di riferimento e via via meno ampie per le altre). Per la prossime versioni il supporto a WP7 e SL4 verrò rimosso.

Considerando sempre la guida ufficiale le funzionalità in più di Catel rispetto agli altri framework riguardano la UI (MVVM specific Window, MVVM specific user control, Dynamic view model injection, Lazy loading of view models, View to VM communication via attributes, …). Per quanto riguarda invece il ViewModel, Catel offre il supporto nativo a IDataErrorInfo, IDataWarningInfo, canceling data, confirming data, Automatic property definitions, Automatic model communications (mappings). Oltre ad un più ampio numero di servizi predefiniti (tra cui spiccano quelli dedicati a Windows Phone, come ILocationService).

Grazie ai project template, ai pacchetti NuGet e all’utilizzo degli item template e degli snippet la creazione di una struttura MVVM è rapida ed è molto interessante scoprire le molte funzionalità disponibili senza ulteriori sforzi: “That's the point where we decided to write our own framework that contains lots of luxury for lazy developers such as us” recita la guida.

Tag: WinPhone, Catel