SlideShare uma empresa Scribd logo
1 de 37
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

Mais conteúdo relacionado

Mais procurados

Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms IntroductionGuido Magrin
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea 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...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 controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controCarmelo Ruota
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Introduction to C#
Introduction to C#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 HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinRiccardo Cappello
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Gaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetGaetano Paternò
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019Alessio Iafrate
 

Mais procurados (20)

Xamarin
XamarinXamarin
Xamarin
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Mobile development .net
Mobile development .netMobile development .net
Mobile development .net
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
Introduction to C#
Introduction to C#Introduction to C#
Introduction to C#
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
 
platforms
platformsplatforms
platforms
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019
 

Semelhante a INTRO TO XAMARIN

Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controNativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controMarco Rinaldi
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net orientedAlessandro Morvillo
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11DomusDotNet
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapDotNetMarche
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architectureLeonardo Alario
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesFrancesco Bonacci
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 

Semelhante a INTRO TO XAMARIN (19)

Nativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e controNativo vs Xamarin: pro e contro
Nativo vs Xamarin: pro e contro
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 
Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 

Mais de DotNetCampus

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTDotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#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 SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#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...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 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATADotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREDotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWDotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!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++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBDotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSDotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPSFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPDotNetCampus
 

Mais de DotNetCampus (20)

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

Último

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 

Último (18)

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 

INTRO TO XAMARIN

  • 1. Template designed by Introduzione a Xamarin Matteo Pagani Support Engineer – AppConsult @ Microsoft matteo.pagani@microsoft.com 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 matteo.pagani@microsoft.com Twitter: @qmatteoq Grazie