xamarin forms: one technology to rule them all - matteo pagani - codemotion rome 2015
TRANSCRIPT
ROME 27-28 march 2015
Xamarin Forms:
one technology to rule them all
Support Engineer – AppConsult @ Microsoft
@qmatteoq
http://wp.qmatteoq.com
Matteo Pagani
ROME 27-28 march 2015
Agenda
• Sviluppo cross-platform e Xamarin
• Introduzione a Xamarin Forms
• Gestire le differenze
ROME 27-28 march 2015
Una applicazione, tante piattaforme
Nel mondo ideale, dovrebbe essere possibile
sviluppare un’applicazione una volta sola e
farla girare su tutte le piattaforme mobile
Nel mondo reale, purtroppo, non è così:
• Windows Phone: C# / VB.NET + XAML o JS +
HTML e Visual Studio
• iOS: Objective-C / Swift e Xcode
• Android: Java e Eclipse
ROME 27-28 march 2015
Una applicazione, tante piattaforme
Nel mondo ideale, dovrebbe essere possibile
sviluppare un’applicazione una volta sola e
farla girare su tutte le piattaforme mobile
Nel mondo reale, purtroppo, non è così:
• Windows Phone: C# / VB.NET + XAML o JS +
HTML e Visual Studio
• iOS: Objective-C / Swift e Xcode
• Android: Java e Eclipse
ROME 27-28 march 2015
Native APIs
MapKit
UIViewController
HealthKit
Etc.
App Native Code
Mono Runtime .NET BCL
Xamarin e iOS
Compilazione
AOT (Ahead of
Time) produce un
pacchetto nativo
Stesse
performance di
un’app nativa
Accesso a tutte
le API di iOS
ROME 27-28 march 2015
Xamarin e Android
Mono VM
Native APIs
Google Play
Support Lib
Activity, Fragments
Etc.
APK
IL Code Resources
Dalvik/
ART VM
Bridge
Compilazione JIT
(Just in Time): il
codice C# viene
convertito in IL,
che viene poi
compilato in
nativo dal device
Accesso a tutte
le API di Android
ROME 27-28 march 2015
Gli ambienti di sviluppo
Xamarin Studio
• Incluso nella licenza
• Disponibile sia per Windows (supporto ad
Android) che per OS X (supporto ad Android
e iOS)
Visual Studio
• Plugin di integrazione
• E’ l’unico strumento che consente lo
sviluppo per iOS, Android e Windows
ROME 27-28 march 2015
Sviluppo per iOS
Mac Build Host, consente di sviluppare da
Visual Studio sfruttando un Mac collegato in
rete per la compilazione e il design
dell’interfaccia
Sviluppo per Android
Nessun requisito particolare
E’ possibile effettuare i test con uno qualsiasi
degli emulatori disponibili (Google,
Genymotion, Microsoft, ecc.)
ROME 27-28 march 2015
Lo sviluppo Xamarin tradizionale
Logica di business
condivisa tra le
piattaforme tramite
PCL
UI specializzata con
gli strumenti nativi
della piattaforma
ROME 27-28 march 2015
Lo sviluppo Xamarin Forms
Portable Class Library or Shared Project
C# Platform Specific C# Platform Specific C# Platform Specific
Shared C# Interface Code
(Xamarin.Forms)
Shared C# App Logic
(ViewModels, Models etc)
iOS 6.1+ Android 4.0+ WP8.0+ (Silverlight)
WinRT in preview
ROME 27-28 march 2015
Lo sviluppo Xamarin Forms
• E’ basato sullo XAML, il linguaggio di Microsoft
fondato sull’XML per la realizzazione di interfacce
grafiche
• I controlli XAML vengono tradotti in controlli nativi a
runtime
• Supporto alle principali caratteristiche di XAML:
binding, dependency property, behavior, trigger, ecc.
• Non è lo stesso XAML di Microsoft: molti punti di
contatto, ma alcuni controlli hanno nomi e proprietà
differenti.
ROME 27-28 march 2015
Gestire le differenze
• Xamarin Forms permette di condividere logica e
interfaccia grafica
• Quando si tratta di interagire con le funzionalità del
device, è necessario usare le API specifiche della
piattaforma
• Xamarin Forms mette a disposizione diversi
meccanismi per gestire le differenze:
• DependencyService
• Custom renderer
• La classe Device
ROME 27-28 march 2015
DependencyService
Portable Class
Library
INetworkService
NetworkService
NetworkService
NetworkService
[assembly: Dependency(typeof(NetworkService))]
ROME 27-28 march 2015
Portable Class
Library
CustomLabel
CustomLabelRenderer
CustomLabelRenderer
CustomLabelRenderer
[assembly: ExportRenderer(typeof(CustomLabel), typeof(CustomLabelRenderer))]
CustomRenderer
ROME 27-28 march 2015
La classe Device
<Label><Label.FontSize><OnPlatform x:TypeArguments="x:Double"
WinPhone="20"iOS="25"Android="30" />
</Label.FontSize></Label>
• Device.OpenUri()
• Device.StartTimer()
• Device.BeginInvokeOnMainThread()
ROME 27-28 march 2015
Che cos’è Xamarin
• Se si conosce C# e il framework .NET, consente di
non imparare un nuovo linguaggio per sviluppare
per altre piattaforme
• Permette di realizzare applicazioni con le stesse
performance e funzionalità di un’applicazione nativa
• Consente di avere una codebase comune tra le
piattaforme, rendendo più semplice l’aggiunta di
nuove feature e la risoluzione di bug
ROME 27-28 march 2015
Che cosa non è Xamarin
• Un modo per sviluppare applicazioni cross-platform
senza conoscere le caratteristiche delle singole
piattaforme
• Una tecnologia per diventare «one developer man»:
in caso di progetti complessi, un team di lavoro può
fare la differenza
• Una tecnologia adatta a qualsiasi sviluppatore:
• Costi di licenza
• Necessità di conoscere C# e Visual Studio
ROME 27-28 march 2015
Leave your feedback on Joind.in!
https://joind.in/event/view/3347
Join the Microsoft meet-up after the beer!
@qmatteoq
http://wp.qmatteoq.com
Grazie!