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

Preview:

DESCRIPTION

Mobile Day @ DotNetCampania

Citation preview

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

Recommended