Universal app ma universal per davvero
-
Upload
klab -
Category
Technology
-
view
295 -
download
0
Transcript of Universal app ma universal per davvero
Universal Appma universal per davvero
Carlo [email protected]
@cafedo84
Sponsored by
10 marzo
2016
Relatore
2/34Domanda
2/34Domanda
3/34Approccio 1
4/34Approccio 2
Analizzare la situazione con l’occhio del dev .NET
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
6/34Problema
• Class library (.dll) specifiche di una piattaforma non possono essere referenziate
• Quindi faccio copia/incolla di codice?
7/34Portable Class Library
• 1 Assembly => Più piattaforme
• Codice centralizzato
• PCL è un sottoinsieme di .NET
8/34Portable Class Library
9/34Portable Class Library
10/34
Problema
10/34
Problema
11/34
Ecosistema Microsoft
11/34
Ecosistema Microsoft
11/34
Ecosistema Microsoft
Steve BallmerSatya Nadella
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
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
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
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
16/34Universal Windows Platform
17/34
Problema
17/34
Problema
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
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
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
Performance native 21/34
22/34
23/34
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
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
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
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
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
29/34Approccio Xamarin.Forms
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à
31/34Approccio Xamarin.Forms
<DatePicker />
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.
33/34Xamarin Platform
34/34
Problema
34/34
Problema
?Domande?