costruire app per winphone, ios e android con c# e xamarin
DESCRIPTION
Mobile Day @ DotNetCampaniaTRANSCRIPT
![Page 1: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/1.jpg)
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Fabio Cozzolino
![Page 2: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/2.jpg)
• Sviluppare un’app cross-platform– Target: iOS, Android e Windows Phone
• Condividere quanto più codice possibile tra le diverse piattaforme
• Ottimizzare i tempi di sviluppo e centralizzare la code base
obiettivi
![Page 3: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/3.jpg)
native apps vs web apps
![Page 4: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/4.jpg)
cross-platform development
![Page 5: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/5.jpg)
Write once, run everywhere AND be
native?
![Page 6: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/6.jpg)
Anatomia di una app nativa
Il look-and-feel delle app Xamarin sembra nativo, perchè è nativo!
Native User Interfaces Native API Access Native Performance
![Page 7: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/7.jpg)
• 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
Xamarin?
![Page 8: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/8.jpg)
HELLO XAMARIN WORLD!DEMO
![Page 9: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/9.jpg)
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
![Page 10: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/10.jpg)
come condivido il codice?
File Linking... e uso le costanti di compilazione condizionale
Shared ProjectStesso del file linking, ma più semplice
Portable Class Library (PCL)1 assembly + piattaformesupporto completo in Visual Studio 2013 e in Xamarin Studio
![Page 11: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/11.jpg)
portable class library
• codebase centralizzata
• compatibilità attraverso limitazione (esempio: supporto al MVVM limitato)• non disponibile con versioni del .NET Framework antecedenti
alla 4.5 (manca la ObservableCollection, per esempio)
• reference alla System.Window necessaria
• richiedono un approccio architetturale più avanzato
![Page 12: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/12.jpg)
Xamarin 3.0
• Semplificazione del Code Sharing– Shared Project
• Xamarin.Form– Cross-platform UI
• Aggiunto il designer (storyboard) Xamarin per iOS– Su Xamarin Studio e Visual Studio
• Potenziamento del plugin per Visual Studio e di Xamarin Studio
• Supporto a F#, NuGet e documentazione della BCL
![Page 13: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/13.jpg)
Cosa serve per lo sviluppo
• Xamarin Studio• Un account Apple Developer o Google Developer• Android SDK• Un Mac con Xcode• Ma anche Windows – Xamarin Plugin per
Visual Studio– Un mac che agisce da
server di compilazione
![Page 14: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/14.jpg)
VISUAL STUDIO? YES WE CAN!DEMO
![Page 15: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/15.jpg)
Architecting mobile apps
![Page 16: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/16.jpg)
cosa possiamo condividere
Business Logic
View Models
Navigation
Entities
Web Services Client
Data Access
…ma anche la UI
![Page 17: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/17.jpg)
Traditional Xamarin approach
Shared App Logic
Native UIC#
Native UIC#
Native UIC#
Shared C# App Logic Shared C# App Logic
Shared App Logic
Shared UICode
Android UI Code
WindowsUI Code
in C#
Shared App LogicShared App Logic
iOS UI
AndroidUI
WindowsUI
Shared UI Code
iOS UI Android UI Windows UI
Shared App Logic
![Page 18: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/18.jpg)
Sharing UI Logic
Shared App Logic
Native UIC#
Native UIC#
Native UIC#
Shared C# App Logic Shared C# App Logic
Shared App Logic
Shared UICode
Android UI Code
WindowsUI Code
in C#
Shared App LogicShared App Logic
iOS UI
AndroidUI
WindowsUI
Shared UI Code
iOS UI Android UI Windows UI
Shared App Logic
Shared UI Logic
![Page 19: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/19.jpg)
MVVM
Shared App Logic
Native UIC#
Native UIC#
Native UIC#
Shared C# App Logic Shared C# App Logic
Shared App Logic
Shared UICode
Android UI Code
WindowsUI Code
in C#
Shared App LogicShared App Logic
iOS UI
AndroidUI
WindowsUI
Shared UI Code
iOS View Android ViewWindows
View
Model
ViewModel
![Page 20: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/20.jpg)
MVVM with Xamarin.Forms
Shared App Logic
Native UIC#
Native UIC#
Native UIC#
Shared C# App Logic Shared C# App Logic
Shared App Logic
Shared UICode
Android UI Code
WindowsUI Code
in C#
Shared App LogicShared App Logic
iOS UI
AndroidUI
WindowsUI
Shared UI Code
Model
View and ViewModel(UI and controller)
![Page 21: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/21.jpg)
Xamarin.Forms
• Sviluppo di UI con Xaml 2009 (o anche programmaticamente)– Data Binding– Converters– Commands– …manca il designer
• Gestione delle specificità delle piattaforme– Dependency Service– Rendering personalizzato dei controlli
• Astrazione delle animazioni• E’ possibile combinare l’utilizzo sia di Xamarin.Form che
delle UI classiche
![Page 22: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/22.jpg)
MAXIMIZING CODE SHARING
![Page 23: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/23.jpg)
Domande?
![Page 24: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/24.jpg)
![Page 25: Costruire app per WinPhone, iOS e Android con C# e Xamarin](https://reader033.vdocuments.site/reader033/viewer/2022061212/5495bd06ac7959092e8b4f2c/html5/thumbnails/25.jpg)
riferimenti
• @fabiocozzolino• Il mio blog: http://dotnetside.org/blogs/fabio• Xamarin blog: http://blogs.xamarin.com