SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Template designed by
sviluppo apps multipiattaforma con
visual studio e xamarin
Fabio Cozzolino
fabio@dotnetside.org
http://dotnetside.org/blogs/fabio
brought to you by
perchè sviluppare con Xamarin
l’ambiente di sviluppo
real world apps
agenda
smartphone OS market share – 03.14
Italy USA
Android 70,7 % 57,6 %
BlackBerry 1,2 % 0,7 %
iOS 12,9 % 35,9 %
Windows Phone 13,9 % 5,3 %
Other 1,3 % 0,4 %
Fonte: Kantar WorldPanel
http://www.kantarworldpanel.com/smartphone-os-market-share/
diversificazione
molti OS = molti ambienti
diversi linguaggi
ogni app deve essere implementata per iOS (iPhone-iPad), per
Android e per Windows Phone
parola d’ordine: riutilizzo
cross-platform development
native apps
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, non della UI
ogni OS ha il suo paradigma (es.: panorama per Windows Phone)
cos’è 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
Cosa serve per lo sviluppo iOS
Xamarin Studio
Un account Apple Developer
Un Mac con Xcode
Ma anche Windows 
Xamarin Plugin per Visual Studio
Un mac che agisce da server di compilazione
DEMO
Hello World!
come condivido il codice?
file linking
... e uso le costanti di compilazione condizionale
Portable Class Library (PCL)
1 assembly + piattaforme
supporto 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
reference alla System.Window necessaria
richiedono un approccio architetturale più avanzato
PCL: Platform Abstraction
Maximizing Code Sharing
cosa possiamo condividere
Business Logic
View Models
Navigation
Entities
Web Services Client
Data Access
Shared Code
OS Specific Code
maximizing code sharing
iOS UI Android UI Windows Phone UI
Business Layer
Application Layer Application Layer Application Layer
Data Access Layer Service Layer
Shared Code
OS Specific Code
maximizing code sharing
iOS UI Android UI Windows Phone UI
Business Layer
Data Access Layer Service Layer
Application Layer
Shared Code
OS Specific Code - View
model-view-viewmodel
iOS UI Android UI Windows Phone UI
ViewModel
Model
Business Layer
Data Access Layer Service Layer
DEMO
maximizing code sharing
riferimenti
Xamarin
http://www.xamarin.com
Channel 9
http://channel9.msdn.com/search?term=xamarin
Il mio blog
http://dotnetside.org/blogs/fabio
@fabiocozzolino
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
cozzolino.fabio@gmail.com
Grazie
bonus
Code Sharing: Data Layer
SQLite database
Supportato dalle tre piattaforme e da WinRT
Accessibile anche nativamente con le CoreData in iOS e
SQLiteOpenHelper in Android
ADO.NET (Classic)
SQLite-NET ORM (anche Portable!)
Molto comodo! 
Code Sharing: File Access
System.IO
Isolated Storage
Stesso meccanismo implementato in Windows Phone
string file = Path.Combine (
Environment.GetFolderPath (Environment.SpecialFolder.Personal),
"yaf.txt");
System.IO.WriteAllText (file, "Yet Another File!");
Code Sharing: Network
WebClient / HttpWebRequest
Reachability.cs
Per il check della rete
RestSharp / ServiceStack.Client
WCF
Limitatamente al BasicHttpBinding
Code Sharing: Task e Threads
Esecuzione di task nello UI thread
Ogni piattaforma ha un approccio differente
iOS: NSObject.BeginInvokeOnMainThread(action)
Android: Activity.RunOnUiThread(action)
WP: Deployment.Current.Dispatcher.BeginInvoke(action)
Utilizziamo un adapter per eseguire le azioni
Microsoft NuGet Libraries
Async for .NET Framework 4, Silverlight 4 and 5, and WP 7.5 & 8
Microsoft BCL Build Components
Microsoft BCL Portability Pack
Microsoft Composition
Microsoft Compression
Microsoft HTTP Client Libraries
Microsoft Immutable Collections
Microsoft ASP.NET SignalR .NET Client
ODataLib
Alcune PCL Libraries
MvvmCross
ReactiveUI
Akavache – Async Persistent Key-Value Store
Splat – Image Loading
Budgie – Twitter Library
Azure Mobile Services
Json.Net
SO MANY MORE!!!
Slide con sponsor che arriva a
qualche giorno dalla conferenza
sponsor
prima riga
seconda riga
terza riga
….
conteunti
demo
Hello World
demo
Hello World
Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Duis eros
enim, gravida in ultrices vitae.
Tincidunt ut mi.
elementi grafici e diagrammi
Windows Kernel Services
JavaScriptC/C++ C#, VB
Metro style Apps
Communication
& Data
Application Model
Devices &
Printing
Windows Runtime APIs
Graphics &
Media
XAML HTML / CSS
HTML
js
XAML
C#
VB
C++
C
Desktop Apps
Win32 WPF SLBrowser
SystemServicesView
Model
Controller
Kernel
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
gino@beppe.com
Grazie

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to XamarinGuido Magrin
 
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Codemotion
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms IntroductionGuido Magrin
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea Tosato
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Gaetano Paternò
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesFrancesco Bonacci
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controCarmelo Ruota
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architectureLeonardo Alario
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Gaetano Paternò
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows UniversalAlessandro Scardova
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...Michele Aponte
 

Was ist angesagt? (20)

Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Mobile development .net
Mobile development .netMobile development .net
Mobile development .net
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
 
Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows Universal
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
 

Andere mochten auch

Online Collaboration In Learning Emergency Services
Online Collaboration In Learning   Emergency ServicesOnline Collaboration In Learning   Emergency Services
Online Collaboration In Learning Emergency Servicesjerryl
 
Optimizing Performance Server9 2 Final
Optimizing Performance Server9 2 FinalOptimizing Performance Server9 2 Final
Optimizing Performance Server9 2 Finalarcorama
 
Telephone group project
Telephone group projectTelephone group project
Telephone group projectamschnepp
 
Allan bowers extended cv 2016
Allan bowers extended cv 2016Allan bowers extended cv 2016
Allan bowers extended cv 2016Allan Bowers
 
KVSRO GUWAHATI 2011-2012 NEWSLETTER
KVSRO GUWAHATI 2011-2012 NEWSLETTERKVSRO GUWAHATI 2011-2012 NEWSLETTER
KVSRO GUWAHATI 2011-2012 NEWSLETTERAnutosh Deb
 
Lorn Overview
Lorn OverviewLorn Overview
Lorn Overviewjerryl
 
Prezentacje
PrezentacjePrezentacje
PrezentacjeIwo123
 
ePortoflios for lifelong learning
ePortoflios for lifelong learningePortoflios for lifelong learning
ePortoflios for lifelong learningjerryl
 
Cat Oca Mediateca
Cat Oca MediatecaCat Oca Mediateca
Cat Oca Mediatecarvuoci
 
Produkte Werbung
Produkte WerbungProdukte Werbung
Produkte Werbungcahowe274
 
Podcasting Presentation Elearning April 2008
Podcasting Presentation   Elearning   April 2008Podcasting Presentation   Elearning   April 2008
Podcasting Presentation Elearning April 2008guest49ba4c
 
Eportfolio Presentation
Eportfolio PresentationEportfolio Presentation
Eportfolio Presentationjerryl
 

Andere mochten auch (20)

Tanzania
TanzaniaTanzania
Tanzania
 
Online Collaboration In Learning Emergency Services
Online Collaboration In Learning   Emergency ServicesOnline Collaboration In Learning   Emergency Services
Online Collaboration In Learning Emergency Services
 
Optimizing Performance Server9 2 Final
Optimizing Performance Server9 2 FinalOptimizing Performance Server9 2 Final
Optimizing Performance Server9 2 Final
 
Fotos Y ImáGenes
Fotos Y ImáGenesFotos Y ImáGenes
Fotos Y ImáGenes
 
Telephone group project
Telephone group projectTelephone group project
Telephone group project
 
Colors
ColorsColors
Colors
 
Abundance
AbundanceAbundance
Abundance
 
Allan bowers extended cv 2016
Allan bowers extended cv 2016Allan bowers extended cv 2016
Allan bowers extended cv 2016
 
KVSRO GUWAHATI 2011-2012 NEWSLETTER
KVSRO GUWAHATI 2011-2012 NEWSLETTERKVSRO GUWAHATI 2011-2012 NEWSLETTER
KVSRO GUWAHATI 2011-2012 NEWSLETTER
 
Edu Tourism
Edu TourismEdu Tourism
Edu Tourism
 
Martinez german r
Martinez german rMartinez german r
Martinez german r
 
Lorn Overview
Lorn OverviewLorn Overview
Lorn Overview
 
Prezentacje
PrezentacjePrezentacje
Prezentacje
 
India
IndiaIndia
India
 
ePortoflios for lifelong learning
ePortoflios for lifelong learningePortoflios for lifelong learning
ePortoflios for lifelong learning
 
Cat Oca Mediateca
Cat Oca MediatecaCat Oca Mediateca
Cat Oca Mediateca
 
Produkte Werbung
Produkte WerbungProdukte Werbung
Produkte Werbung
 
Tabla rt2
Tabla rt2Tabla rt2
Tabla rt2
 
Podcasting Presentation Elearning April 2008
Podcasting Presentation   Elearning   April 2008Podcasting Presentation   Elearning   April 2008
Podcasting Presentation Elearning April 2008
 
Eportfolio Presentation
Eportfolio PresentationEportfolio Presentation
Eportfolio Presentation
 

Ähnlich wie Sviluppo apps multipiattaforma con visual studio e xamarin

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
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Gaetano Paternò
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overviewAlfredo Morresi
 
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
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerLuca Congiu
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Francesco Baldassarri
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
EtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeEtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeGaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetGaetano Paternò
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1codeblock
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get StartedCodemotion
 

Ähnlich wie Sviluppo apps multipiattaforma con visual studio e xamarin (20)

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 - ...
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 
Android
AndroidAndroid
Android
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
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
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Reportage Delphi Day 2012
Reportage Delphi Day 2012Reportage Delphi Day 2012
Reportage Delphi Day 2012
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
EtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeEtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows Bridge
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get Started
 
Flash vs jQuery
Flash vs jQueryFlash vs jQuery
Flash vs jQuery
 

Kürzlich hochgeladen

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 

Kürzlich hochgeladen (6)

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 

Sviluppo apps multipiattaforma con visual studio e xamarin

  • 1. Template designed by sviluppo apps multipiattaforma con visual studio e xamarin Fabio Cozzolino fabio@dotnetside.org http://dotnetside.org/blogs/fabio
  • 3. perchè sviluppare con Xamarin l’ambiente di sviluppo real world apps agenda
  • 4. smartphone OS market share – 03.14 Italy USA Android 70,7 % 57,6 % BlackBerry 1,2 % 0,7 % iOS 12,9 % 35,9 % Windows Phone 13,9 % 5,3 % Other 1,3 % 0,4 % Fonte: Kantar WorldPanel http://www.kantarworldpanel.com/smartphone-os-market-share/
  • 5. diversificazione molti OS = molti ambienti diversi linguaggi ogni app deve essere implementata per iOS (iPhone-iPad), per Android e per Windows Phone parola d’ordine: riutilizzo
  • 8. 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, non della UI ogni OS ha il suo paradigma (es.: panorama per Windows Phone) cos’è xamarin
  • 9. 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
  • 10. Cosa serve per lo sviluppo iOS Xamarin Studio Un account Apple Developer Un Mac con Xcode Ma anche Windows  Xamarin Plugin per Visual Studio Un mac che agisce da server di compilazione
  • 12. come condivido il codice? file linking ... e uso le costanti di compilazione condizionale Portable Class Library (PCL) 1 assembly + piattaforme supporto completo in Visual Studio 2013 e in Xamarin Studio
  • 13. portable class library codebase centralizzata compatibilità attraverso limitazione (esempio: supporto al MVVM limitato) non disponibile con versioni del .NET Framework antecedenti alla 4.5 reference alla System.Window necessaria richiedono un approccio architetturale più avanzato
  • 16. cosa possiamo condividere Business Logic View Models Navigation Entities Web Services Client Data Access
  • 17. Shared Code OS Specific Code maximizing code sharing iOS UI Android UI Windows Phone UI Business Layer Application Layer Application Layer Application Layer Data Access Layer Service Layer
  • 18. Shared Code OS Specific Code maximizing code sharing iOS UI Android UI Windows Phone UI Business Layer Data Access Layer Service Layer Application Layer
  • 19. Shared Code OS Specific Code - View model-view-viewmodel iOS UI Android UI Windows Phone UI ViewModel Model Business Layer Data Access Layer Service Layer
  • 22. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi cozzolino.fabio@gmail.com Grazie
  • 23. bonus
  • 24. Code Sharing: Data Layer SQLite database Supportato dalle tre piattaforme e da WinRT Accessibile anche nativamente con le CoreData in iOS e SQLiteOpenHelper in Android ADO.NET (Classic) SQLite-NET ORM (anche Portable!) Molto comodo! 
  • 25. Code Sharing: File Access System.IO Isolated Storage Stesso meccanismo implementato in Windows Phone string file = Path.Combine ( Environment.GetFolderPath (Environment.SpecialFolder.Personal), "yaf.txt"); System.IO.WriteAllText (file, "Yet Another File!");
  • 26. Code Sharing: Network WebClient / HttpWebRequest Reachability.cs Per il check della rete RestSharp / ServiceStack.Client WCF Limitatamente al BasicHttpBinding
  • 27. Code Sharing: Task e Threads Esecuzione di task nello UI thread Ogni piattaforma ha un approccio differente iOS: NSObject.BeginInvokeOnMainThread(action) Android: Activity.RunOnUiThread(action) WP: Deployment.Current.Dispatcher.BeginInvoke(action) Utilizziamo un adapter per eseguire le azioni
  • 28. Microsoft NuGet Libraries Async for .NET Framework 4, Silverlight 4 and 5, and WP 7.5 & 8 Microsoft BCL Build Components Microsoft BCL Portability Pack Microsoft Composition Microsoft Compression Microsoft HTTP Client Libraries Microsoft Immutable Collections Microsoft ASP.NET SignalR .NET Client ODataLib
  • 29. Alcune PCL Libraries MvvmCross ReactiveUI Akavache – Async Persistent Key-Value Store Splat – Image Loading Budgie – Twitter Library Azure Mobile Services Json.Net SO MANY MORE!!!
  • 30. Slide con sponsor che arriva a qualche giorno dalla conferenza sponsor
  • 31. prima riga seconda riga terza riga …. conteunti
  • 34. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eros enim, gravida in ultrices vitae. Tincidunt ut mi.
  • 35. elementi grafici e diagrammi Windows Kernel Services JavaScriptC/C++ C#, VB Metro style Apps Communication & Data Application Model Devices & Printing Windows Runtime APIs Graphics & Media XAML HTML / CSS HTML js XAML C# VB C++ C Desktop Apps Win32 WPF SLBrowser SystemServicesView Model Controller Kernel
  • 36. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi gino@beppe.com Grazie