Top Banner
Universal App ma universal per davvero Carlo Fedeli [email protected] @cafedo84 Sponsored by 10 marzo 2016 Relatore
41

Universal app ma universal per davvero

Apr 15, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Universal app ma universal per davvero

Universal Appma universal per davvero

Carlo [email protected]

@cafedo84

Sponsored by

10 marzo

2016

Relatore

Page 2: Universal app ma universal per davvero

2/34Domanda

Page 3: Universal app ma universal per davvero

2/34Domanda

Page 4: Universal app ma universal per davvero

3/34Approccio 1

Page 5: Universal app ma universal per davvero

4/34Approccio 2

Analizzare la situazione con l’occhio del dev .NET

Page 6: Universal app ma universal per davvero

5/34Analizzare la situazione• Capisco cosa l’applicazione deve fare

• Raccolgo la logica di business in una .dll (o più)• No alla frammentazione

• Cerco di portarla su tutte le piattaforme possibili• Il business deve essere slegato dalle logiche UI

Page 7: Universal app ma universal per davvero

6/34Problema

• Class library (.dll) specifiche di una piattaforma non possono essere referenziate

• Quindi faccio copia/incolla di codice?

Page 8: Universal app ma universal per davvero

7/34Portable Class Library

• 1 Assembly => Più piattaforme

• Codice centralizzato

• PCL è un sottoinsieme di .NET

Page 9: Universal app ma universal per davvero

8/34Portable Class Library

Page 10: Universal app ma universal per davvero

9/34Portable Class Library

Page 11: Universal app ma universal per davvero

10/34

Problema

Page 12: Universal app ma universal per davvero

10/34

Problema

Page 13: Universal app ma universal per davvero

11/34

Ecosistema Microsoft

Page 14: Universal app ma universal per davvero

11/34

Ecosistema Microsoft

Page 15: Universal app ma universal per davvero

11/34

Ecosistema Microsoft

Steve BallmerSatya Nadella

Page 16: Universal app ma universal per davvero

12/34Approccio Windows 8.1

• Un progetto condiviso, due progetti specifici per Windows e Windows Phone

• Compilazione condizionale per gestire le differenze tra le piattaforme

• Due differenti pacchetti

Page 17: Universal app ma universal per davvero

13/34Approccio Windows 8.1

#if WINDOWS_APP ResourceLoader loader = new ResourceLoader(); string about = loader.GetString("SettingsLabel/Text"); string privacy = loader.GetString("PrivacySettings/Text"); string options = loader.GetString("Settings/Text"); ISettingsService settings = container.RegisterSettingsService(); settings.RegisterFlyoutCommand<AboutViewModel>(about); settings.RegisterFlyoutCommand<PrivacyPolicyViewModel>(privacy); settings.RegisterFlyoutCommand<SettingsViewModel>(options);#endif

Page 18: Universal app ma universal per davvero

14/34Universal Windows Platform

• E’ una collezione di contratti ed estensioni, basata sul Windows Runtime

• Quando si crea un’applicazione si sceglie come riferimento una versione della UWP, non del sistema operativo

Page 19: Universal app ma universal per davvero

15/34Un pacchetto per tutti i dispositivi• Scompaiono il progetto condiviso e i

progetti specifici per ogni piattaforma

• Niente più compilazione condizionale

• Un unico Store per tutte le piattaforme

• La Universal Windows Platform è disponibile su ogni dispositivo basato su Windows 10

Page 20: Universal app ma universal per davvero

16/34Universal Windows Platform

Page 21: Universal app ma universal per davvero

17/34

Problema

Page 22: Universal app ma universal per davvero

17/34

Problema

Page 23: Universal app ma universal per davvero

Approccio classico 18/34• Vantaggi

• Focus sulla piattaforma

• Applicazioni native (performance)

• Svantaggi

• Multiple code base

• Frammentazione• 3 codebase diverse• No codice condiviso

• Ciao ciao PCL..

• Lento quindi costoso

Page 24: Universal app ma universal per davvero

HTML 19/34• Vantaggi

• Un unico linguaggio per lo sviluppo

• Condivisione codice• PCL lato server

• Sfrutto le skill che ho già

• Svantaggi

• Frammentazione WebBrowser

• Look&feel web non nativo

• Abbastanza limitata

Page 25: Universal app ma universal per davvero

XAMARIN 20/34

Tutto quello che si può sviluppare in Objective-C, Swift, o Java può essere implementato anche usando C# with Xamarin using

Visual Studio

Page 26: Universal app ma universal per davvero

Performance native 21/34

Page 27: Universal app ma universal per davvero

22/34

Page 28: Universal app ma universal per davvero

23/34

Page 29: Universal app ma universal per davvero

24/34Approccio standard• L’interfaccia utente viene realizzata

sfruttando i tool nativi (Storyboard in iOS, AXML in Android)

• Accesso a tutte le API native della piattaforma

• Richiede una buona conoscenza delle due piattaforme

• Tramite le Portable Class Library, condividiamo la logica di business

Page 30: Universal app ma universal per davvero

25/34Approccio standard - AndroidIn Xamarin, ogni pagina è una Activity composta da:

• Un file XML, che descrive il layout (può essere fatto anche da codice)

• Una classe, che gestisce le interazioni con la Activity

Page 31: Universal app ma universal per davvero

26/34Approccio standard - AndroidE’ possibile accedere ai controlli tramite un ID

• Viene assegnato un ID nell’XML

• Il processo di build genera una risorsa

• Si sfrutta la risorsa per accedere al controllo

Page 32: Universal app ma universal per davvero

27/34Approccio standard - IOS• Basato sul pattern MVC

• Ogni applicazione ha uno Storyboard, ovvero la rappresentazione visuale di tutte le schermate dell’app

• Ogni schermata è una scene

• Ogni scene è composta da una View (il layout) e da un ViewController, che ne gestisce le interazioni

Page 33: Universal app ma universal per davvero

28/34Approccio standard - IOS• Le storyboard e la

navigazione tra una scene e l’altra vengono creati direttamente nel designer di Xamarin

• Il design richiede il collegamento con un Mac

Page 34: Universal app ma universal per davvero

29/34Approccio Xamarin.Forms

Page 35: Universal app ma universal per davvero

30/34Approccio Xamarin.Forms• Mi permette di condividere non solo la logica di business, ma

anche l’interfaccia utente.

• Linguaggio per la UI basato su XAML: i controlli XAML vengono convertiti in controlli nativi a runtime.

• Supporta le caratteristiche principali dello XAML: binding, dependency property, trigger, behavior, etc.

• Non è lo stesso XAML di Microsoft: molti punti in comune, ma nomi diversi per alcuni controlli e proprietà

Page 36: Universal app ma universal per davvero

31/34Approccio Xamarin.Forms

<DatePicker />

Page 37: Universal app ma universal per davvero

32/34Approccio Xamarin.Forms• SI• Devo creare il prototipo di un’applicazione per un cliente o

per una demo• Devo creare un’applicazione di business• Non voglio imparare tutte le specifiche di ogni singola

piattaforma

• No• La mia applicazione è fortemente integrata con feature

specifiche della piattaforma.• La mia applicazione deve avere UI differenti per ogni

piattaforma.

Page 38: Universal app ma universal per davvero

33/34Xamarin Platform

Page 39: Universal app ma universal per davvero

34/34

Problema

Page 40: Universal app ma universal per davvero

34/34

Problema

Page 41: Universal app ma universal per davvero

?Domande?