Sviluppo apps multipiattaforma con visual studio e xamarin
1. Template designed by
sviluppo apps multipiattaforma con
visual studio e xamarin
Fabio Cozzolino
fabio@dotnetside.org
http://dotnetside.org/blogs/fabio
4. smartphone OS market share – 03.14
Italy USA
Android 70,7 % 57,6 %
BlackBerry 1,2 % 0,7 %
iOS 12,9 % 35,9 %
Windows Phone 13,9 % 5,3 %
Other 1,3 % 0,4 %
Fonte: Kantar WorldPanel
http://www.kantarworldpanel.com/smartphone-os-market-share/
5. diversificazione
molti OS = molti ambienti
diversi linguaggi
ogni app deve essere implementata per iOS (iPhone-iPad), per
Android e per Windows Phone
parola d’ordine: riutilizzo
8. evoluzione di mono (ximian, novell...)
framework sempre aggiornato e tools di sviluppo
binding e accesso alle API native di iOS e Android
aggiornamento entro le 24 ore successive ad ogni rilascio ufficiale
ambiente di sviluppo (Xamarin Studio e/o Visual Studio)
C# everywhere
permette il riutilizzo delle nostre conoscenze in .NET
riutilizzo del codice, non della UI
ogni OS ha il suo paradigma (es.: panorama per Windows Phone)
cos’è xamarin
9. come funziona xamarin?
compilazione nativa
devono essere incluse le librerie Xamarin/Mono utilizzate
minimizzazione del pacchetto con il Linker (30% più piccolo)
iOS: AOT (ahead-of-time)
precompilazione per ARM con mtouch
Android: JIT (just-in-time)
compilato in bytecode ed eseguito nella MonoVM (inclusa)
esecuzione side-by-side con la DalvikVM
è possibile utilizzare anche le funzionalità Java esposte dalla Dalvik
10. Cosa serve per lo sviluppo iOS
Xamarin Studio
Un account Apple Developer
Un Mac con Xcode
Ma anche Windows
Xamarin Plugin per Visual Studio
Un mac che agisce da server di compilazione
12. come condivido il codice?
file linking
... e uso le costanti di compilazione condizionale
Portable Class Library (PCL)
1 assembly + piattaforme
supporto completo in Visual Studio 2013
e in Xamarin Studio
13. portable class library
codebase centralizzata
compatibilità attraverso limitazione (esempio: supporto al
MVVM limitato)
non disponibile con versioni del .NET Framework antecedenti alla 4.5
reference alla System.Window necessaria
richiedono un approccio architetturale più avanzato
17. Shared Code
OS Specific Code
maximizing code sharing
iOS UI Android UI Windows Phone UI
Business Layer
Application Layer Application Layer Application Layer
Data Access Layer Service Layer
18. Shared Code
OS Specific Code
maximizing code sharing
iOS UI Android UI Windows Phone UI
Business Layer
Data Access Layer Service Layer
Application Layer
19. Shared Code
OS Specific Code - View
model-view-viewmodel
iOS UI Android UI Windows Phone UI
ViewModel
Model
Business Layer
Data Access Layer Service Layer
22. Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
cozzolino.fabio@gmail.com
Grazie
24. Code Sharing: Data Layer
SQLite database
Supportato dalle tre piattaforme e da WinRT
Accessibile anche nativamente con le CoreData in iOS e
SQLiteOpenHelper in Android
ADO.NET (Classic)
SQLite-NET ORM (anche Portable!)
Molto comodo!
25. Code Sharing: File Access
System.IO
Isolated Storage
Stesso meccanismo implementato in Windows Phone
string file = Path.Combine (
Environment.GetFolderPath (Environment.SpecialFolder.Personal),
"yaf.txt");
System.IO.WriteAllText (file, "Yet Another File!");
26. Code Sharing: Network
WebClient / HttpWebRequest
Reachability.cs
Per il check della rete
RestSharp / ServiceStack.Client
WCF
Limitatamente al BasicHttpBinding
27. Code Sharing: Task e Threads
Esecuzione di task nello UI thread
Ogni piattaforma ha un approccio differente
iOS: NSObject.BeginInvokeOnMainThread(action)
Android: Activity.RunOnUiThread(action)
WP: Deployment.Current.Dispatcher.BeginInvoke(action)
Utilizziamo un adapter per eseguire le azioni
28. Microsoft NuGet Libraries
Async for .NET Framework 4, Silverlight 4 and 5, and WP 7.5 & 8
Microsoft BCL Build Components
Microsoft BCL Portability Pack
Microsoft Composition
Microsoft Compression
Microsoft HTTP Client Libraries
Microsoft Immutable Collections
Microsoft ASP.NET SignalR .NET Client
ODataLib
34. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis eros
enim, gravida in ultrices vitae.
Tincidunt ut mi.
35. elementi grafici e diagrammi
Windows Kernel Services
JavaScriptC/C++ C#, VB
Metro style Apps
Communication
& Data
Application Model
Devices &
Printing
Windows Runtime APIs
Graphics &
Media
XAML HTML / CSS
HTML
js
XAML
C#
VB
C++
C
Desktop Apps
Win32 WPF SLBrowser
SystemServicesView
Model
Controller
Kernel
36. Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
gino@beppe.com
Grazie