25
Costruire app per WinPhone, iOS e Android con C# e Xamarin Fabio Cozzolino

Costruire app per WinPhone, iOS e Android con C# e Xamarin

Embed Size (px)

DESCRIPTION

Mobile Day @ DotNetCampania

Citation preview

Page 1: Costruire app per WinPhone, iOS e Android con C# e Xamarin

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

• 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

native apps vs web apps

Page 4: Costruire app per WinPhone, iOS e Android con C# e Xamarin

cross-platform development

Page 5: Costruire app per WinPhone, iOS e Android con C# e Xamarin

Write once, run everywhere AND be

native?

Page 6: Costruire app per WinPhone, iOS e Android con C# e Xamarin

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

• 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

HELLO XAMARIN WORLD!DEMO

Page 9: Costruire app per WinPhone, iOS e Android con C# e Xamarin

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

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

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

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

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

VISUAL STUDIO? YES WE CAN!DEMO

Page 15: Costruire app per WinPhone, iOS e Android con C# e Xamarin

Architecting mobile apps

Page 16: Costruire app per WinPhone, iOS e Android con C# e Xamarin

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

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

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

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

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

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

MAXIMIZING CODE SHARING

Page 23: Costruire app per WinPhone, iOS e Android con C# e Xamarin

Domande?

Page 24: Costruire app per WinPhone, iOS e Android con C# e Xamarin
Page 25: Costruire app per WinPhone, iOS e Android con C# e Xamarin

riferimenti

• @fabiocozzolino• Il mio blog: http://dotnetside.org/blogs/fabio• Xamarin blog: http://blogs.xamarin.com