SlideShare uma empresa Scribd logo
1 de 41
Universal App
ma universal per davvero
Carlo Fedeli
carlo.fedeli@elfo.net
@cafedo84
Sponsored by
10 marzo
2016
Relatore
2/34Domanda
2/34Domanda
3/34Approccio1
4/34Approccio2
Analizzarela situazionecon l’occhiodeldev .NET
5/34Analizzare la situazione
• Capisco cosa l’applicazione deve fare
• Raccolgo la logica di business in una.dll(o più)
• Noallaframmentazione
• Cerco di portarla su tuttele piattaformepossibili
• Il business deve essere slegato dalle logiche UI
6/34Problema
• Class library (.dll) specifiche di unapiattaforma non possono essere
referenziate
• Quindi faccio copia/incolla di codice?
7/34Portable Class Library
• 1 Assembly => Più piattaforme
• Codice centralizzato
• PCLè unsottoinsiemedi .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 Ballmer
Satya Nadella
12/34ApproccioWindows8.1
• Un progetto condiviso, due progetti specifici per Windows e Windows
Phone
• Compilazione condizionale per gestire le differenzetra le piattaforme
• Duedifferentipacchetti
13/34ApproccioWindows8.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 contrattied estensioni, basata sul Windows Runtime
• Quando si crea un’applicazione si sceglie come riferimento unaversione
della UWP, nondel sistemaoperativo
15/34Un pacchetto pertutti i dispositivi
• Scompaiono il progetto condiviso e i progetti specifici per ogni
piattaforma
• Nientepiù compilazionecondizionale
• Un unicoStore per tuttele piattaforme
• La Universal Windows Platformè disponibile su ogni dispositivo basato
su Windows 10
16/34Universal Windows Platform
17/34
Problema
17/34
Problema
Approccioclassico 18/34
• Vantaggi
• Focus sullapiattaforma
• Applicazioninative(performance)
• Svantaggi
• Multiplecode base
• Frammentazione
• 3 codebase diverse
• Nocodice condiviso
• Ciao ciaoPCL..
• Lento quindi costoso
HTML 19/34
• Vantaggi
• Ununico linguaggioperlosviluppo
• Condivisionecodice
• PCLlato server
• Sfruttole skillche hogià
• Svantaggi
• FrammentazioneWebBrowser
• Look&feelwebnon nativo
• Abbastanzalimitata
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/34Approcciostandard
• 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/34Approcciostandard -Android
In Xamarin, ogni pagina è una Activity composta da:
• Un file XML, che descrive il layout
(puòesserefatto ancheda codice)
• Unaclasse, chegestisce le interazioni
conla Activity
26/34Approcciostandard -Android
E’ possibile accedereai controlli tramite un ID
• Viene assegnato un ID nell’XML
• Il processo di build genera
una risorsa
• Si sfrutta la risorsa peraccedere
al controllo
27/34Approcciostandard -IOS
• Basato sul pattern MVC
• Ogni applicazione ha unoStoryboard, ovverola rappresentazione visuale di tutte le schermate dell’app
• Ogni schermata è una scene
• Ogni scene è composta da unaView(il layout) e da un ViewController, che ne gestisce le interazioni
28/34Approcciostandard -IOS
• Le storyboard e la navigazione tra una
scene e l’altra vengono creati
direttamente nel designer diXamarin
• Il design richiede il collegamento con un
Mac
29/34ApproccioXamarin.Forms
30/34ApproccioXamarin.Forms
• Mipermettedicondividerenonsololalogicadibusiness,ma anchel’interfacciautente.
• Linguaggioper la UIbasatosuXAML:icontrolliXAMLvengonoconvertitiincontrollinativiaruntime.
• SupportalecaratteristicheprincipalidelloXAML:binding,dependencyproperty,trigger,behavior,etc.
• NonèlostessoXAMLdiMicrosoft:moltipuntiincomune,ma nomidiversiper alcunicontrollie
proprietà
31/34ApproccioXamarin.Forms
<DatePicker />
32/34ApproccioXamarin.Forms
• SI
• Devocreareilprototipodiun’applicazioneperunclienteoperunademo
• Devocreareun’applicazionedibusiness
• Nonvoglioimpararetuttelespecifichediognisingolapiattaforma
• No
• Lamia applicazioneèfortementeintegrata confeaturespecifichedellapiattaforma.
• Lamia applicazionedeveavere UIdifferentiperognipiattaforma.
33/34Xamarin Platform
34/34
Problema
34/34
Problema
?Domande?

Mais conteúdo relacionado

Mais procurados

Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Emanuele Bartolesi
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETEmanuele Bartolesi
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...Codemotion
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-templateDotNetCampus
 
Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Eugenio Minardi
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple WatchCodice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple WatchCodemotion
 
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5WMauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5WMeet Magento Italy
 
SonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo EmiliSonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo EmiliAntonio Liccardi
 
Php Day 2009:Un Salto Nel Buio
Php Day 2009:Un Salto Nel BuioPhp Day 2009:Un Salto Nel Buio
Php Day 2009:Un Salto Nel Buiopietrobr
 
Meetup PrestaShop Torino [IT]
Meetup PrestaShop Torino [IT]Meetup PrestaShop Torino [IT]
Meetup PrestaShop Torino [IT]PrestaShop
 
Alfresco Day Milano 2016 - TAI
Alfresco Day Milano 2016 - TAIAlfresco Day Milano 2016 - TAI
Alfresco Day Milano 2016 - TAIAlfresco Software
 

Mais procurados (19)

Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
 
Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple WatchCodice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch
 
Tutto su ASP.NET Identity
Tutto su ASP.NET IdentityTutto su ASP.NET Identity
Tutto su ASP.NET Identity
 
Tfs Basic - Quick Intro
Tfs Basic - Quick IntroTfs Basic - Quick Intro
Tfs Basic - Quick Intro
 
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5WMauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
 
SonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo EmiliSonarQube e il debito tecnico - Matteo Emili
SonarQube e il debito tecnico - Matteo Emili
 
Alfresco su misura
Alfresco su misuraAlfresco su misura
Alfresco su misura
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Php Day 2009:Un Salto Nel Buio
Php Day 2009:Un Salto Nel BuioPhp Day 2009:Un Salto Nel Buio
Php Day 2009:Un Salto Nel Buio
 
Meetup PrestaShop Torino [IT]
Meetup PrestaShop Torino [IT]Meetup PrestaShop Torino [IT]
Meetup PrestaShop Torino [IT]
 
Alfresco Day Milano 2016 - TAI
Alfresco Day Milano 2016 - TAIAlfresco Day Milano 2016 - TAI
Alfresco Day Milano 2016 - TAI
 

Destaque

Don’t await … try async/await !
Don’t await … try async/await !Don’t await … try async/await !
Don’t await … try async/await !Klab
 
There is a bot for that
There is a bot for thatThere is a bot for that
There is a bot for thatKlab
 
Database under source control
Database under source controlDatabase under source control
Database under source controlKlab
 
Introduzione a ReactiveX
Introduzione a ReactiveXIntroduzione a ReactiveX
Introduzione a ReactiveXKlab
 
The five dysfunctions of a team
The five dysfunctions of a teamThe five dysfunctions of a team
The five dysfunctions of a teamKlab
 
Async/Await: make it simple!!
Async/Await: make it simple!!Async/Await: make it simple!!
Async/Await: make it simple!!Massimo Bonanni
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms IntroductionGuido Magrin
 
Il cielo è sempre più azure
Il cielo è sempre più azureIl cielo è sempre più azure
Il cielo è sempre più azureKlab
 
Code metrics
Code metricsCode metrics
Code metricsKlab
 
On working in Particular
On working in ParticularOn working in Particular
On working in ParticularMauro Servienti
 
Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deployKlab
 
Croce e delizia del lavoro remoto
Croce e delizia del lavoro remotoCroce e delizia del lavoro remoto
Croce e delizia del lavoro remotoMauro Servienti
 
SOA, DDD e microservices
SOA, DDD e microservicesSOA, DDD e microservices
SOA, DDD e microservicesMauro Servienti
 
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)Mauro Servienti
 
Single Sign On con IdentityServer
Single Sign On con IdentityServerSingle Sign On con IdentityServer
Single Sign On con IdentityServerMauro Servienti
 

Destaque (17)

Don’t await … try async/await !
Don’t await … try async/await !Don’t await … try async/await !
Don’t await … try async/await !
 
There is a bot for that
There is a bot for thatThere is a bot for that
There is a bot for that
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
Introduzione a ReactiveX
Introduzione a ReactiveXIntroduzione a ReactiveX
Introduzione a ReactiveX
 
The five dysfunctions of a team
The five dysfunctions of a teamThe five dysfunctions of a team
The five dysfunctions of a team
 
Async/Await: make it simple!!
Async/Await: make it simple!!Async/Await: make it simple!!
Async/Await: make it simple!!
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
 
Il cielo è sempre più azure
Il cielo è sempre più azureIl cielo è sempre più azure
Il cielo è sempre più azure
 
Code metrics
Code metricsCode metrics
Code metrics
 
On working in Particular
On working in ParticularOn working in Particular
On working in Particular
 
Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deploy
 
Services UI composition
Services UI compositionServices UI composition
Services UI composition
 
Croce e delizia del lavoro remoto
Croce e delizia del lavoro remotoCroce e delizia del lavoro remoto
Croce e delizia del lavoro remoto
 
Pub/Sub Basics
Pub/Sub BasicsPub/Sub Basics
Pub/Sub Basics
 
SOA, DDD e microservices
SOA, DDD e microservicesSOA, DDD e microservices
SOA, DDD e microservices
 
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
 
Single Sign On con IdentityServer
Single Sign On con IdentityServerSingle Sign On con IdentityServer
Single Sign On con IdentityServer
 

Semelhante a Universal app ma universal per davvero

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Luca Zulian
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Android base day1
Android base day1Android base day1
Android base day1Andrea Zaza
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazioneDaniele Costarella
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione AvanzataStefano Sanna
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerLuca Congiu
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker dotnetcode
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Fabio Mora
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 

Semelhante a Universal app ma universal per davvero (20)

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Xamarin
XamarinXamarin
Xamarin
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Android base day1
Android base day1Android base day1
Android base day1
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Glv on air 08-10_2019
Glv on air   08-10_2019Glv on air   08-10_2019
Glv on air 08-10_2019
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 

Universal app ma universal per davvero