Xamarin!

Nel suo libro “Xamarin Essential” Mark Reynolds inizia con questa domanda: “Ricordate in Star Wars quando Anakin capisce che Palpatine conosce il lato oscuro della forza?”

09 giu 2015

Cos’è Xamarin?

 

Nel suo libro “Xamarin Essential” Mark Reynolds inizia con questa domanda: “Ricordate in Star Wars quando Anakin capisce che Palpatine conosce il lato oscuro della forza?”
Se si sostituisce il lato oscuro della forza con Xamarin la frase sarebbe più o meno questa: “Xamarin è la via per acquistare molte capacità, da alcuni ritenute ingiustamente non naturali ”.

 

La prima volta che lo si utilizza la sensazione è proprio questa, come è possibile scrivere codice C# funzionante su iOS e Android?

 

Xamarin è un framework basato su C#, pensato per consentire lo sviluppo di applicazioni mobile multipiattaforma. Creato da Miguel De Icaza nel 2011 raccoglie l’eredità del progetto Mono sul quale si basa fortemente.

Perché Xamarin?

 

Lo sviluppo di applicazioni mobile è storicamente dispendioso in termini di risorse e conoscenze…oltre ad essere, purtroppo, ancora poco preso in considerazione a livello business in Italia.

 

L’approccio classico (Silo) è quello di creare diversi team di sviluppo, uno per piattaforma.
Per porre rimedio alla duplicazione di lavoro che questo metodo comporta sono stati realizzati diversi framework di sviluppo. I framework ibridi (Black Box) permettono di creare app simili a quelle web, sviluppate in HTML, CSS e JavaScript, che vengono poi eseguite su un browser.
Questa soluzione ha lo svantaggio di limitare le funzioni specifiche presenti su ciascun sistema e di creare interfacce utenti che sembrano tutte uguali limitando così la user experience degli utenti che si aspettano invece un look and feel più vicino alla loro piattaforma.
Tuttavia, la possibilità di usare uno strumento che offra un paradigma di sviluppo noto e comune ai tre sistemi, è un buon motivo che spinge aziende e team di sviluppo a seguire questa strada. Questa soluzione ha il vantaggio di non dover conoscere le API di sviluppo dei diversi sistemi operativi e viene quindi spesso adottata per mancanza di risorse e tempo.

 

Xamarin.Droid e Xamarin.iOS

 

In questo contesto, Xamarin offre vantaggi simili, consentendo l’uso del linguaggio C# e di .NET per lo sviluppo di applicazioni Android, iOS e Windows Phone, con in più la possibilità di poter utilizzare tutte le caratteristiche native, sia per quanto riguarda l’interfaccia che per le caratteristiche tipiche, delle diverse piattaforme. Risulta versatile e perfettamente integrato in Visual Studio.

 

Xamarin wrappa le API native di ogni piattaforma con un wrapper C#, consentendo allo sviluppatore di interagire con il sistema operativo in modo trasparente e del tutto simile a come farebbe uno sviluppatore Android o iOS.


Le applicazioni vengono compilate in modo distinto, in codice nativo, durante il deploy.

 

L’utilizzo di Xamarin.iOS e Xamarin.Android permette di condividere (con ovvi benefici per sviluppi futuri e manutenibilità) circa il 60% del codice tra le diverse applicazioni. Tuttavia è comunque necessario conoscere i pattern di sviluppo su cui si basano iOS e Android e le caratteristiche tipiche dei due sistemi operativi.
La UI rimane layer critico su cui agire.

 

Xamarin Forms

 

Nel 2014 Charles Petzold, dipendente e sviluppatore Xamarin, ha la brillante idea di creare Xamarin.Forms. L’idea è abbastanza semplice: serve un framework comune con cui creare la UI delle app indipendentemente dalla piattaforma. Avendo a disposizione C# e tutta l’immensa infrastruttura di contorno perché non utilizzare XAML e MVVM?

Xamarin.Forms fa propri questi concetti insieme a quello altrettanto importante di Portable Class Library (PCL).
Una PCL in buona sostanza è una libreria portabile compilata per poter funzionare con un sottoinsieme di .NET compatibile con diverse piattaforme.
Sviluppare un’app in Xamarin.Forms risulta quindi molto simile a WPF con l’indubbio vantaggio di poter astrarre completamente dalla piattaforma, dai sui pattern e dal suo sistema operativo.

 

La nostra prima esperienza

 

Nell’ultimo mese abbiamo sviluppato due applicazioni utilizzando Xamarin.Forms per alcuni clienti storici di Elfo. L’esperienza e i feedback sono stati sicuramente positivi.

 

Xamarin.Forms esiste da pochi mesi e deve migliorare tanto sotto molti aspetti (controlli disponibili prima di tutto) ma il potenziale è molto elevato considerando la forte partnership che Xamarin ha stretto con Microsoft e con la decisione di rendere pubblico il codice sorgente di una parte sostanziale di .NET da parte di quest’ultima.  Non ultimo il forte contributo della nutrita cummunity che fonda le sue radici su WPF.

 

Xamarin.Forms non è adatto a tutti i tipi di app. Per applicazioni che necessitano di forti customizzazioni a livello di interfaccia oppure devono sfruttare al meglio l’hardware è preferibile la scelta nativa utilizzando Xamarin.iOS e Xamarin.Android. Al contrario è un’ottima scelta per app “data centric” che devono appunto manipolare e mostrare dati con interfacce semplici ed intuitive tipiche dei dispositivi mobile.

 

Un ultimo aspetto piuttosto importante riguarda i test la manutenibilità dell’applicazione. Tramite Xamarin Test Cloud è possibile testare l’app su migliaia di device fisici senza averli a disposizione e interagendo come un utente vero e proprio.
Xamarin Insights permette invece di monitorare l’app in modo dettagliato e veloce, fornendo dati statistici utili a capire come l’utente utilizza effettivamente l’applicazione e quindi agire velocemente in caso di problemi.

 

Che dire…avanti così Xamarin!