intro to xamarin

37
Template designed by Introduzione a Xamarin Matteo Pagani Support Engineer – AppConsult @ Microsoft [email protected] http://wp.qmatteoq.com

Upload: dotnetcampus

Post on 14-Aug-2015

64 views

Category:

Education


2 download

TRANSCRIPT

Page 1: INTRO TO XAMARIN

Template designed by

Introduzione a XamarinMatteo PaganiSupport Engineer – AppConsult @ [email protected] http://wp.qmatteoq.com

Page 2: INTRO TO XAMARIN

Lo sviluppo cross platform

I requisiti di Xamarin

L’approccio Xamarin tradizionale

Xamarin Forms

agenda

Page 3: INTRO TO XAMARIN

Una applicazione, tante piattaforme

• In un mondo ideale, sarebbe bello poter sviluppare l’applicazione solo

• Nel mondo reale, le cose funzionano in maniera differente:• Windows Phone: C# / VB.NET + XAML o JS + HTML e Visual

Studio• iOS: Objective-C / Swift and Xcode• Android: Java e Eclipse / Android Studio / editor di terze parti

Page 4: INTRO TO XAMARIN

Sviluppo nativo

Pro

• Performance

• Puoi utilizzare tutte le feature della piattaforma

Contro

• Devi conoscere linguaggi di programmazione e tool molto diversi tra di loro

• Tre differenti codebase da mantenere, senza la possibilità di condividere codice

Page 5: INTRO TO XAMARIN

Sviluppo con tecnologie web

Basato su tecnologie web (HTML e Javascript) e tool come Apache Cordova, che offrono l’accesso alle API native tramite librerie Javascript.

L’applicazione nativa è composta da una singola WebView, che si fa carico di renderizzare il contenuto web.

Page 6: INTRO TO XAMARIN

Sviluppo con tecnologie web

Pro• L’interfaccia utente e la logica sono sviluppate una volta sola.

• E’ possibile riutilizzare le skill web e i framework più diffusi come jQuery, AngularJS, Bootstrap, ecc.

Contro• Performance peggiori rispetto alle applicazioni native

• Un’unica interfaccia utente significa che è molto difficile realizzare una UI che rispetti le guideline di ogni piattaforma

• E’ possibile sfruttare solo le API che sono in comune tra tutte le piattaforme (storage, GPS, sensori, etc.)

Page 7: INTRO TO XAMARIN

Welcome to Xamarin!

Access to all the platform

features

Native user interface

Android, iOS and Windows development with Visual

Studio

You can share, on

average, up to 75% of the

code

You can reuse your C# skills

Page 8: INTRO TO XAMARIN

• E’ basato su Mono, l’implementazione open source di C# e .NET

• E’ stata creato per supportare lo sviluppo .NET su diverse piattaforme:• Linux• BSD• Windows• Console

• Xamarin iOS e Xamarin Android sono basati su Mono

Xamarin and Mono

Page 9: INTRO TO XAMARIN

Xamarin and iOS

• Il codice è 100% nativo

• Compilazione Ahead-Of-Time (AOT): il processo di build produce direttamente codice nativo, offrendo le stesse performance di un’app realizzata con Objective-C o Swift.

• Tutte le API di iOS sono utilizzabili in Xamarin tramite la sintassi e le naming convention di C# e del framework .NET.

• Supporto a Apple Watch, iPhone, iPad e iPod.

Page 10: INTRO TO XAMARIN

• Alcune limitazioni legate all’uso di feature C#

• Dato che viene usata compilazione AOT per produrre il pacchetto nativo, il processo di build effettua una analisi statica del codice:• Niente reflection• Niente classi con uso di generic• Niente generazione dinamica di codice

Xamarin and iOS

Page 11: INTRO TO XAMARIN

iOS Runtime Model

iOS

Native APIsMapKit

UIViewControllerHealthKit

Etc.

App Native Code

Mono Runtime .NET BCL

Page 12: INTRO TO XAMARIN

Xamarin and Android

• Approccio simile al framework .NET:• Il codice C# viene convertito in IL e incluso nell’APK• L’IL viene convertito in codice nativo tramite compilazione Just-In-

Time (JIT) dal device

• Xamarin produce un pacchetto che offre le stesse performance di un’applicazione di un’applicazione scritta in Java

• Sono supportate tutte le API di Android.

• Supporta diverse branch di Android: Kindle Fire, Android Wear, Android TV, ecc.

Page 13: INTRO TO XAMARIN

Android Runtime Model

Android OS

Mono VM

Native APIsGoogle PlaySupport Lib

Activity, FragmentsEtc.

APK

IL CodeResourc

es

Dalvik/ART VM

Bridge

Page 14: INTRO TO XAMARIN

Tool di sviluppo

Xamarin Studio:

• Disponibile su Windows e OS X

• Supporta Android e iOS (solo su OS X)

• Incluso nella licenza Xamarin

Visual Studio:

• Plugin che si integra con Visual Studio

• Supporta Android, iOS e Windows Phone

Page 15: INTRO TO XAMARIN

Sviluppo iOS con Xamarin

• Richiede un Mac dato che, per limitazioni tecniche e di licenza, la compilazione iOS è possibile solo su OS X.

• E’ possibile utilizzare un Mac come macchina di build, grazie al tool Xamarin Build Host:• Lo sviluppo viene fatto su Windows con Visual Studio• La compilazione e il deploy vengono gestiti da OS X

Page 16: INTRO TO XAMARIN

Sviluppo Android con Xamarin

• Nessun requisito speciale, è supportato sia da Windows che OS X

• E’ possibile testare le applicazioni con diversi emulatori:• Google (sconsigliato)• Genymotion https://www.genymotion.com• Xamarin Android Player https://xamarin.com/android-player• Emulatore Microsoft incluso in Visual Studio 2015 basato su Hyper-

V (utilizza l’immagine base OSP senza i servizi di Google)

Page 17: INTRO TO XAMARIN

La licenza Xamarin

• Diverse licenze disponibili: Starter, Indie, Business e Enterprise• Xamarin Forms richiede almeno la licenza Indie• L’integrazione con Visual Studio richiede almeno la

licenza Business

• Prezzo scontato per gli abbonati MSDN

• Licenza gratuita per studenti e sviluppatori open source

Page 18: INTRO TO XAMARIN

• Diverse librerie di terze parti che possono essere utilizzate nei progetti PCL, Xamarin iOS e Xamarin Android

Due piattaforme:

• NuGet

• Component Store:• Simile a NuGet• Supporta anche componenti a pagamento

Librerie di terze parti

Page 19: INTRO TO XAMARIN

Condividere il codice

Shared project

• Una tipologia di progetto particolare, che non produce una DLL come output durante il processo di build.

• I fle inclusi nel progetto vengono copiati all’interno dei progetti specifici delle piattaforme, tramite il meccanismo dei link di Visual Studio

• E’ basato sulla compilazione condizionale per gestire le differenze tra le varie piattaforme

Page 20: INTRO TO XAMARIN

Tramite la compilazione condizionale, è possibile includere codice che viene incluso durante il processo di build per una piattaforma

Condividere il codice

public void DoSomething(){ #if WINDOWS_PHONE //some Windows Phone APIs #endif

#if __ANDROID__ //some Android APIs #endif

#if __IOS__ //some iOS APIs #endif}

Page 21: INTRO TO XAMARIN

Condividere il codice

Portable Class Library

• Il progetto produce una DLL come output, che può essere utilizzata in diverse tipologie di progetti (Windows, Windows Phone, Xamarin, etc.)

• E’ supportato il set minimo di API disponibili su ogni piattaforma

• Non supporta la compilazione condizionale

Page 22: INTRO TO XAMARIN

L’approccio standard

Page 23: INTRO TO XAMARIN

L’approccio standard

• L’interfaccia utente viene realizzata sfruttando i tool nativi (Storyboard in iOS, AXML in Android)

• Accesso a tutte le API native della piattaforma

• Richiede una buona conoscenza delle due piattaforme.

• Tramite le Portable Class Library, potete condividere la logica di business (accesso al cloud, database, comunicazione con i servizi, ecc.)

Page 24: INTRO TO XAMARIN

In Xamarin, ogni pagina è una Activity composta da:

• Un file XML, che descrive il layout (può essere fatto anche da codice)

• Una classe, che gestisce le interazioni con la Activity

Xamarin Android

<?xml version="1.0" encoding="utf-8"?><LinearLayout ...> <TextView ... /> <EditText ... /> <Button ... /></LinearLayout>

[Activity(MainLauncher = true]public class MainActivity : Activity{

...}

UI definita tramite XML

Classe C# che eredita da Activity ed è

decorata con l’omonimo attributo

Page 25: INTRO TO XAMARIN

Accesso ai controlli in Xamarin Android

<TextView android:id="@+id/PhoneNumber" />

// aapt resource value: 0x7f050000public const int PhoneNumber = 2131034112;

TextView phoneNumberView = this.FindViewById<TextView>(Resource.Id.PhoneNumber);

Viene assegnato un ID nell’XML

E’ possibile accedere ai controlli tramite un ID

Il processo di build genera una risorsa

Si sfrutta la risorsa per accedere al

controllo

Page 26: INTRO TO XAMARIN

• Basato sul pattern MVC

• Ogni applicazione ha uno Storyboard, ovvero la rappresentazione visuale di tutte le schermate dell’app

• Ogni schermata è una scene

• Ogni scene è composta da una View (il layout) e da un ViewController, che ne gestisce le interazioni

Xamarin iOS

Page 27: INTRO TO XAMARIN

• Le storyboard e la navigazione tra una scene e l’altra vengono creati direttamente nel designer di Xamarin

• Il design richiede il collegamento con un Mac

Il designer di Xamarin iOS

Page 28: INTRO TO XAMARIN

dem

o Xamarin Android

Page 29: INTRO TO XAMARIN

Si!

• Volete riutilizzare le skill su C# and .NET vostre o del vostro team

• Volete creare applicazioni che si integrino con le feature della piattaforma

• La vostra applicazione fa largo uso di business logic che volete riutilizzare in tutte le piattaforme

E’ la tecnologia giusta per me?

Page 30: INTRO TO XAMARIN

No!

• Voi o il vostro team non avete skill su C# e il framework .NET

• Volete creare applicazioni mobile senza conoscere i dettagli di ogni singola piattaforma

Is the right technology for me?

Page 31: INTRO TO XAMARIN

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 support in preview

Page 32: INTRO TO XAMARIN

Xamarin Forms

• Vi permette di condividere non solo la logica di business, ma anche l’interfaccia utente.

• Linguaggio per la UI basato su XAML: i controlli XAML vengono convertiti in controlli nativi a runtime.

• Supporta le caratteristiche princiapli dello XAML: binding, dependency property, trigger, behavior, etc.

• Non è lo stesso XAML di Microsoft: molti punti in comune, ma nomi diversi per alcuni controlli e proprietà

Page 33: INTRO TO XAMARIN

Xamarin Forms<DatePicker />

Page 34: INTRO TO XAMARIN

Si!

• Dovete creare il prototipo di un’applicazione per un cliente o per una demo

• Dovete creare un’applicazione di business

• Non volete imparare tutte le specifiche di ogni singola piattaforma

E’ la tecnologia giusta per me?

Page 35: INTRO TO XAMARIN

No!

• La vostra applicazione è fortemente integrata con feature specifiche della piattaforma.

• La vostra applicazione deve avere UI differenti per ogni piattaforma.

E’ la tecnologia giusta per me?

Page 36: INTRO TO XAMARIN

dem

o Xamarin Forms

Page 37: INTRO TO XAMARIN

Grazie a tutti per la partecipazione

Riceverete il link per il download a slide e demo via email nei prossimi giorni

Per contattarmi

[email protected]

Twitter: @qmatteoq

Grazie