Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion Rome 2015

22
ROME 27-28 march 2015 Xamarin Forms: one technology to rule them all Support Engineer AppConsult @ Microsoft [email protected] @qmatteoq http://wp.qmatteoq.com Matteo Pagani

Transcript of Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion Rome 2015

ROME 27-28 march 2015

Xamarin Forms:

one technology to rule them all

Support Engineer – AppConsult @ Microsoft

[email protected]

@qmatteoq

http://wp.qmatteoq.com

Matteo Pagani

ROME 27-28 march 2015

Agenda

• Sviluppo cross-platform e Xamarin

• Introduzione a Xamarin Forms

• Gestire le differenze

ROME 27-28 march 2015

Una applicazione, tante piattaforme

Nel mondo ideale, dovrebbe essere possibile

sviluppare un’applicazione una volta sola e

farla girare su tutte le piattaforme mobile

Nel mondo reale, purtroppo, non è così:

• Windows Phone: C# / VB.NET + XAML o JS +

HTML e Visual Studio

• iOS: Objective-C / Swift e Xcode

• Android: Java e Eclipse

ROME 27-28 march 2015

Una applicazione, tante piattaforme

Nel mondo ideale, dovrebbe essere possibile

sviluppare un’applicazione una volta sola e

farla girare su tutte le piattaforme mobile

Nel mondo reale, purtroppo, non è così:

• Windows Phone: C# / VB.NET + XAML o JS +

HTML e Visual Studio

• iOS: Objective-C / Swift e Xcode

• Android: Java e Eclipse

ROME 27-28 march 2015

ROME 27-28 march 2015

Native APIs

MapKit

UIViewController

HealthKit

Etc.

App Native Code

Mono Runtime .NET BCL

Xamarin e iOS

Compilazione

AOT (Ahead of

Time) produce un

pacchetto nativo

Stesse

performance di

un’app nativa

Accesso a tutte

le API di iOS

ROME 27-28 march 2015

Xamarin e Android

Mono VM

Native APIs

Google Play

Support Lib

Activity, Fragments

Etc.

APK

IL Code Resources

Dalvik/

ART VM

Bridge

Compilazione JIT

(Just in Time): il

codice C# viene

convertito in IL,

che viene poi

compilato in

nativo dal device

Accesso a tutte

le API di Android

ROME 27-28 march 2015

Gli ambienti di sviluppo

Xamarin Studio

• Incluso nella licenza

• Disponibile sia per Windows (supporto ad

Android) che per OS X (supporto ad Android

e iOS)

Visual Studio

• Plugin di integrazione

• E’ l’unico strumento che consente lo

sviluppo per iOS, Android e Windows

ROME 27-28 march 2015

Sviluppo per iOS

Mac Build Host, consente di sviluppare da

Visual Studio sfruttando un Mac collegato in

rete per la compilazione e il design

dell’interfaccia

Sviluppo per Android

Nessun requisito particolare

E’ possibile effettuare i test con uno qualsiasi

degli emulatori disponibili (Google,

Genymotion, Microsoft, ecc.)

ROME 27-28 march 2015

Lo sviluppo Xamarin tradizionale

Logica di business

condivisa tra le

piattaforme tramite

PCL

UI specializzata con

gli strumenti nativi

della piattaforma

ROME 27-28 march 2015

Lo sviluppo Xamarin Forms

Portable Class Library or Shared Project

C# Platform Specific C# Platform Specific C# Platform Specific

Shared C# Interface Code

(Xamarin.Forms)

Shared C# App Logic

(ViewModels, Models etc)

iOS 6.1+ Android 4.0+ WP8.0+ (Silverlight)

WinRT in preview

ROME 27-28 march 2015

Lo sviluppo Xamarin Forms

• E’ basato sullo XAML, il linguaggio di Microsoft

fondato sull’XML per la realizzazione di interfacce

grafiche

• I controlli XAML vengono tradotti in controlli nativi a

runtime

• Supporto alle principali caratteristiche di XAML:

binding, dependency property, behavior, trigger, ecc.

• Non è lo stesso XAML di Microsoft: molti punti di

contatto, ma alcuni controlli hanno nomi e proprietà

differenti.

ROME 27-28 march 2015

<DatePicker />

ROME 27-28 march 2015

Un progetto Xamarin Forms

Demo

ROME 27-28 march 2015

Gestire le differenze

• Xamarin Forms permette di condividere logica e

interfaccia grafica

• Quando si tratta di interagire con le funzionalità del

device, è necessario usare le API specifiche della

piattaforma

• Xamarin Forms mette a disposizione diversi

meccanismi per gestire le differenze:

• DependencyService

• Custom renderer

• La classe Device

ROME 27-28 march 2015

DependencyService

Portable Class

Library

INetworkService

NetworkService

NetworkService

NetworkService

[assembly: Dependency(typeof(NetworkService))]

ROME 27-28 march 2015

Portable Class

Library

CustomLabel

CustomLabelRenderer

CustomLabelRenderer

CustomLabelRenderer

[assembly: ExportRenderer(typeof(CustomLabel), typeof(CustomLabelRenderer))]

CustomRenderer

ROME 27-28 march 2015

La classe Device

<Label><Label.FontSize><OnPlatform x:TypeArguments="x:Double"

WinPhone="20"iOS="25"Android="30" />

</Label.FontSize></Label>

• Device.OpenUri()

• Device.StartTimer()

• Device.BeginInvokeOnMainThread()

ROME 27-28 march 2015

Gestire le differenze

Demo

ROME 27-28 march 2015

Che cos’è Xamarin

• Se si conosce C# e il framework .NET, consente di

non imparare un nuovo linguaggio per sviluppare

per altre piattaforme

• Permette di realizzare applicazioni con le stesse

performance e funzionalità di un’applicazione nativa

• Consente di avere una codebase comune tra le

piattaforme, rendendo più semplice l’aggiunta di

nuove feature e la risoluzione di bug

ROME 27-28 march 2015

Che cosa non è Xamarin

• Un modo per sviluppare applicazioni cross-platform

senza conoscere le caratteristiche delle singole

piattaforme

• Una tecnologia per diventare «one developer man»:

in caso di progetti complessi, un team di lavoro può

fare la differenza

• Una tecnologia adatta a qualsiasi sviluppatore:

• Costi di licenza

• Necessità di conoscere C# e Visual Studio

ROME 27-28 march 2015

Leave your feedback on Joind.in!

https://joind.in/event/view/3347

Join the Microsoft meet-up after the beer!

[email protected]

@qmatteoq

http://wp.qmatteoq.com

Grazie!