Sviluppo rapido di applicazioni mobile iOS e Android con Corona SDK - SMAU MILANO 25 Ottobre 2013
Costruire app per WinPhone, iOS e Android con C# e Xamarin
-
Upload
fabio-cozzolino -
Category
Software
-
view
411 -
download
1
description
Transcript of Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Fabio Cozzolino
• 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
native apps vs web apps
cross-platform development
Write once, run everywhere AND be
native?
Anatomia di una app nativa
Il look-and-feel delle app Xamarin sembra nativo, perchè è nativo!
Native User Interfaces Native API Access Native Performance
• 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?
HELLO XAMARIN WORLD!DEMO
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
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
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
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
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
VISUAL STUDIO? YES WE CAN!DEMO
Architecting mobile apps
cosa possiamo condividere
Business Logic
View Models
Navigation
Entities
Web Services Client
Data Access
…ma anche la UI
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
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
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
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)
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
MAXIMIZING CODE SHARING
Domande?
riferimenti
• @fabiocozzolino• Il mio blog: http://dotnetside.org/blogs/fabio• Xamarin blog: http://blogs.xamarin.com