SlideShare a Scribd company logo
Template designed by
Introduzione a Xamarin
Matteo Pagani
Support Engineer – AppConsult @ Microsoft
matteo.pagani@microsoft.com
http://wp.qmatteoq.com
Lo sviluppo cross platform
I requisiti di Xamarin
L’approccio Xamarin tradizionale
Xamarin Forms
agenda
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
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
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.
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.)
Welcome 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
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.
• 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
iOS Runtime Model
iOS
Native APIs
MapKit
UIViewController
HealthKit
Etc.
App Native Code
Mono Runtime .NET BCL
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.
Android Runtime Model
Android OS
Mono VM
Native APIs
Google Play
Support Lib
Activity, Fragments
Etc.
APK
IL Code Resources
Dalvik/ART
VM
Bridge
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
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
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)
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
• 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
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
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
}
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
L’approccio standard
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.)
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
{
...
}
Accesso ai controlli in Xamarin Android
<TextView android:id="@+id/PhoneNumber" />
// aapt resource value: 0x7f050000
public const int PhoneNumber = 2131034112;
TextView phoneNumberView =
this.FindViewById<TextView>
(Resource.Id.PhoneNumber);
E’ possibile accedere ai controlli tramite un ID
• 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
• 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
demo
Xamarin Android
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?
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?
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
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à
Xamarin Forms
<DatePicker />
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?
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?
demo
Xamarin Forms
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
matteo.pagani@microsoft.com
Twitter: @qmatteoq
Grazie
Ad

Recommended

Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Luca Zulian
 
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Fabio Cozzolino
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#
Dan Ardelean
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
Dan Ardelean
 
Introduction to Xamarin
Introduction to Xamarin
Guido Magrin
 
Writing apps for android with .net
Writing apps for android with .net
Leonardo Alario
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
Fabio Cozzolino
 
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Codemotion
 
Xamarin
Xamarin
Fabio Cozzolino
 
Xamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
 
Introduzione Xamarin
Introduzione Xamarin
Andrea Tosato
 
Xamarin Robotics
Xamarin Robotics
Fabio Cozzolino
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Paternò
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
Carmelo Ruota
 
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
 
Mobile development .net
Mobile development .net
Raffaele Fanizzi
 
Introduzione a Xamarin
Introduzione a Xamarin
Beniamino Ferrari
 
Introduction to C#
Introduction to C#
Guido Magrin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
Intro xamarin forms
Intro xamarin forms
Nicolò Carandini
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
Riccardo Cappello
 
platforms
platforms
Acrmnet s.r.l.
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
Gaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
Gaetano Paternò
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019
Alessio Iafrate
 
Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e contro
Marco Rinaldi
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
Francesco Bonacci
 

More Related Content

What's hot (20)

Xamarin
Xamarin
Fabio Cozzolino
 
Xamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
 
Introduzione Xamarin
Introduzione Xamarin
Andrea Tosato
 
Xamarin Robotics
Xamarin Robotics
Fabio Cozzolino
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Paternò
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
Carmelo Ruota
 
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
 
Mobile development .net
Mobile development .net
Raffaele Fanizzi
 
Introduzione a Xamarin
Introduzione a Xamarin
Beniamino Ferrari
 
Introduction to C#
Introduction to C#
Guido Magrin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
Intro xamarin forms
Intro xamarin forms
Nicolò Carandini
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
Riccardo Cappello
 
platforms
platforms
Acrmnet s.r.l.
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
Gaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
Gaetano Paternò
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019
Alessio Iafrate
 
Xamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
 
Introduzione Xamarin
Introduzione Xamarin
Andrea Tosato
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Paternò
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
Carmelo Ruota
 
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
 
Introduction to C#
Introduction to C#
Guido Magrin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
Riccardo Cappello
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
Gaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
Gaetano Paternò
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019
Alessio Iafrate
 

Similar to INTRO TO XAMARIN (19)

Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e contro
Marco Rinaldi
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
Francesco Bonacci
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Codemotion
 
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, Microsoft
SMAU
 
Universal app ma universal per davvero
Universal app ma universal per davvero
Klab
 
Xamarin forms
Xamarin forms
Alessio Iafrate
 
MonoTouch, un anno dopo
MonoTouch, un anno dopo
Stefano Ottaviani
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
Dan Ardelean
 
Mobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
 
MVVM Cross &lt;3 Xamarin
MVVM Cross &lt;3 Xamarin
Corrado Cavalli
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Stefano Ottaviani
 
Xamarin.android
Xamarin.android
Beniamino Ferrari
 
App mobile cross-platform con Xamarin
App mobile cross-platform con Xamarin
Michele Aponte
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUI
Marco Bortolin
 
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Nicolò Carandini
 
Introduzione alle app Windows Universal
Introduzione alle app Windows Universal
Alessandro Scardova
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
Francesco Florio
 
Xaml su Xamarin
Xaml su Xamarin
Beniamino Ferrari
 
Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e contro
Marco Rinaldi
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
Francesco Bonacci
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Codemotion
 
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, Microsoft
SMAU
 
Universal app ma universal per davvero
Universal app ma universal per davvero
Klab
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
Dan Ardelean
 
Mobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
 
MVVM Cross &lt;3 Xamarin
MVVM Cross &lt;3 Xamarin
Corrado Cavalli
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Stefano Ottaviani
 
App mobile cross-platform con Xamarin
App mobile cross-platform con Xamarin
Michele Aponte
 
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Nicolò Carandini
 
Introduzione alle app Windows Universal
Introduzione alle app Windows Universal
Alessandro Scardova
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
Francesco Florio
 
Ad

More from DotNetCampus (20)

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
DotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
DotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
DotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
DotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
DotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
DotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
DotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
DotNetCampus
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
DotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
DotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
DotNetCampus
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
DotNetCampus
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
DotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
DotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
DotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
DotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
DotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
DotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
DotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
DotNetCampus
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
DotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
DotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
DotNetCampus
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
DotNetCampus
 
Ad

Recently uploaded (19)

BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
Nguyen Thanh Tu Collection
 
Capolavorooooooooooooooooooooooooooo.pdf
Capolavorooooooooooooooooooooooooooo.pdf
ssuserd66503
 
Media Technologies 1st Edition Tarleton Gillespie
Media Technologies 1st Edition Tarleton Gillespie
qcspccqs905
 
Club del libro Deserto dei Tartari
Club del libro Deserto dei Tartari
paolofvesco
 
Contemporary Research On Business And Management Siska Noviaristanti
Contemporary Research On Business And Management Siska Noviaristanti
xybnhst3272
 
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
tafgtss2769
 
PENSIERI INUTILI essay about democracy and identity
PENSIERI INUTILI essay about democracy and identity
venetianlanguage
 
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
zjqcibg889
 
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
ssuserd66503
 
Czech An Essential Grammar Bilingual James Naughton
Czech An Essential Grammar Bilingual James Naughton
gkomdigywi4802
 
Catalogo WISE-ING 2025 - Seconda Competenza
Catalogo WISE-ING 2025 - Seconda Competenza
Wise Ing
 
Experiencing MIS 5th Edition Kroenke Test Bank
Experiencing MIS 5th Edition Kroenke Test Bank
twyoymgar4752
 
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
nypanokeim
 
Regole di Grammatica Italiana classe quarta.ppsx
Regole di Grammatica Italiana classe quarta.ppsx
Noto6
 
Blueberries A Century Of Research Gough Robert Edward Korcak
Blueberries A Century Of Research Gough Robert Edward Korcak
aqjulpbi5818
 
eNERGIZER DEMO teaching dance performance.pptx
eNERGIZER DEMO teaching dance performance.pptx
louellarepollo
 
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
paolofvesco
 
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
Nguyen Thanh Tu Collection
 
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
qkznysd8395
 
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
Nguyen Thanh Tu Collection
 
Capolavorooooooooooooooooooooooooooo.pdf
Capolavorooooooooooooooooooooooooooo.pdf
ssuserd66503
 
Media Technologies 1st Edition Tarleton Gillespie
Media Technologies 1st Edition Tarleton Gillespie
qcspccqs905
 
Club del libro Deserto dei Tartari
Club del libro Deserto dei Tartari
paolofvesco
 
Contemporary Research On Business And Management Siska Noviaristanti
Contemporary Research On Business And Management Siska Noviaristanti
xybnhst3272
 
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
tafgtss2769
 
PENSIERI INUTILI essay about democracy and identity
PENSIERI INUTILI essay about democracy and identity
venetianlanguage
 
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
zjqcibg889
 
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
ssuserd66503
 
Czech An Essential Grammar Bilingual James Naughton
Czech An Essential Grammar Bilingual James Naughton
gkomdigywi4802
 
Catalogo WISE-ING 2025 - Seconda Competenza
Catalogo WISE-ING 2025 - Seconda Competenza
Wise Ing
 
Experiencing MIS 5th Edition Kroenke Test Bank
Experiencing MIS 5th Edition Kroenke Test Bank
twyoymgar4752
 
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
nypanokeim
 
Regole di Grammatica Italiana classe quarta.ppsx
Regole di Grammatica Italiana classe quarta.ppsx
Noto6
 
Blueberries A Century Of Research Gough Robert Edward Korcak
Blueberries A Century Of Research Gough Robert Edward Korcak
aqjulpbi5818
 
eNERGIZER DEMO teaching dance performance.pptx
eNERGIZER DEMO teaching dance performance.pptx
louellarepollo
 
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
paolofvesco
 
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
Nguyen Thanh Tu Collection
 
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
qkznysd8395
 

INTRO TO XAMARIN

  • 1. Template designed by Introduzione a Xamarin Matteo Pagani Support Engineer – AppConsult @ Microsoft [email protected] http://wp.qmatteoq.com
  • 2. Lo sviluppo cross platform I requisiti di Xamarin L’approccio Xamarin tradizionale Xamarin Forms agenda
  • 3. 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
  • 4. 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
  • 5. 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.
  • 6. 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.)
  • 8. • 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
  • 9. 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.
  • 10. • 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
  • 11. iOS Runtime Model iOS Native APIs MapKit UIViewController HealthKit Etc. App Native Code Mono Runtime .NET BCL
  • 12. 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.
  • 13. Android Runtime Model Android OS Mono VM Native APIs Google Play Support Lib Activity, Fragments Etc. APK IL Code Resources Dalvik/ART VM Bridge
  • 14. 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
  • 15. 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
  • 16. 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)
  • 17. 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
  • 18. • 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
  • 19. 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
  • 20. 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 }
  • 21. 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
  • 23. 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.)
  • 24. 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 { ... }
  • 25. Accesso ai controlli in Xamarin Android <TextView android:id="@+id/PhoneNumber" /> // aapt resource value: 0x7f050000 public const int PhoneNumber = 2131034112; TextView phoneNumberView = this.FindViewById<TextView> (Resource.Id.PhoneNumber); E’ possibile accedere ai controlli tramite un ID
  • 26. • 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
  • 27. • 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
  • 29. 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?
  • 30. 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?
  • 31. 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
  • 32. 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à
  • 34. 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?
  • 35. 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?
  • 37. 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