MvvmCross: un framework completo e cross-platform

24 nov 2013 22:26

_Logo Tra i diversi Framework MVVM che ho valutato in questo periodo, come ad esempio Catel, il progetto open source MvvmCross rappresenta un interessante compromesso tra la complessità di alcuni e la flessibilità di altri. Con un vantaggio in più: il supporto cross-platform.

Attualmente le piattaforme di riferimento sono: Windows 8 Store, Windows Phone 7/8, WPF, Xamarin.Android, Xamarin.iOS e Xamarin.Mac. Questa incredibile opportunità è dovuta in parte anche alla partnership tra Xamarin e Microsoft, che vede sempre più il C# e il .NET rivolto ad un vasto e diversificato mondo di oltre 2 miliardi e mezzo di dispositivi.

XamarinAndMS

Il framework fa largo uso delle Portable Class Libraries (PCL): infatti il Core delle applicazioni è un insieme di PCL in cui mantenere Model, ViewModel, Services e tutti gli altri oggetti non specifici di una certa piattaforma, come la UI che infatti deve necessariamente essere nativa, sebbene il progetto si stia evolvendo per rendere più omogeneo il design multi piattaforma. Vedremo in futuro se sarà possibile creare un’unica UI senza cambiare le linee guide dei vari dispositivi.

Per sfruttare gli aspetti cross platform è naturalmente necessario installare i prodotti Xamarin: sono gratuiti nella versione base e permettono di pubblicare applicazioni negli store sebbene con varie limitazioni.

Tutte le librerie necessarie e i plug-in sono disponibili tramite NuGet, ma in questo caso torna utile l’estensione di Visual Studio Visual Studio 2012 MvvmCross Ninja Coder Extension che permette di creare in pochi click la struttura base di un App cross-platform, nonché gestire ViewModel, Servizi e Plug-in. Lo scopo dell’estensione è limitare tutti i task ripetitivi, come ad esempio crea in automatico la base della Unit Test per ogni ViewModel generato. Oltre ad installare vari template di progetto, aggiunge al menu Tools di Visual Studio un proprio menu di comandi. L’estensione permette l’utilizzo di MvvmCross anche offline (senza accedere a NuGet, per intenderci).

VSExtension

Il progetto è attivo e le risorse disponibili molte, a partire dal sito ufficiale ospitato presso GitHub. Tra i vari link segnalo:

Tra i vari crediti dichiarati dagli autori vi sono: MonoCross, Cirrious, MvvmLight, ASP.NET MVC e OpenNetCF. Infatti MvvmCross prende spunto qua e là per fornire un framework molto flessibile ma completo, che vedremo in dettaglio in prossimi articoli.