際際滷

際際滷Share a Scribd company logo
Mobile Development Day 2014
Mobile App Architecture
Leo Alario
http://dotnetside.org/blogs/leo
http://twitter.com/leo_alario
leo.alario@gmail.com
Mobile Development Day 2014
Agenda
 Come progettare e realizzare un'applicazione
multipiattaforma utilizzando C#
 Come riutilizzare la logica di business condividendola con
altre piattaforme
 Utilizzo di pattern e tecniche di codifica avanzate per
garantire una quantit elevata di riutilizzo del codice
 Effettuare il porting di unapplicazione esistente (Windows
Forms, Windows CE, WPF, ASP.NET e Silverlight), a
determinate condizioni per嘆
Mobile Development Day 2014
Silo approach
 Platform-specific
 Molte codebase
 Bassa manutenibilit
 Bassa innovazione
 Molti profili professionali
 Molto costoso
Mobile Development Day 2014
Write once run anywhere way
 Orientate ai contenuti
 Frammentazione browser
 User experience scadente
 Scarsa interazione device
 Alti tassi di abbandono
Mobile Development Day 2014
Cross-platform way
 Creazione di app native
 C# .NET - Mono
 Full Device API
 Visual/Xamarin Studio
 2,6 miliardi di dispositivi
Mobile Development Day 2014
Cross-platform way
 Android, iOS, Mac, Altri
 Windows - Phone/Store
 ALM
 Interazione UI avanzate
 Massima performance
 User experience nativa
 Riutilizzo degli skill, del team, dei tool e
del codice!
 Minor costo!
Mobile Development Day 2014
Perch辿 .NET e C#?
 LINQ Support
 Work With XML Easily
 Event Handling & Delegates
 Json.NET
Mobile Development Day 2014
Perch辿 .NET e C#?
 Async/Await
 Task Parallel Library aka TPL
Mobile Development Day 2014
La ricetta architetturale
Separiamo la UI dal model!
 MVC Pattern
 MVP Pattern
 MVVM lapproccio Microsoft
Suddividiamo lapplicazione in due sotto componenti:
 Core
 User interface
Mobile Development Day 2014
Larchitettura
Massima condivisione del codice tra le piattaforme!
Come tutte le 束ricette損 pu嘆 essere personalizzata
Mobile Development Day 2014
Larchitettura
 Stratificare l'architettura dell'applicazione:
gestiamo la complessit sfruttando la
束scomposizione損
 Layer debolmente accoppiati con i layer
sottostanti
 Separation of responsibility (Layer e Classi)
 Polimorfismo/Abstraction -> platform-
specific features
(Interface, Interface, Interface! )
Mobile Development Day 2014
Larchitettura: Core Component
 Layer tipici:
 Data layer (DL)
 Data Access Layer (DAL)
SQLite + SQLite-NET ORM
 Service Access Layer (SAL)
 Business Layer (BL)
Mobile Development Day 2014
Larchitettura: Core Component
Che codice possiamo condividere?
 Core Application Logic
 Entities/Models (POCO Objects)
 Web Services (REST / SOAP)
 Data Access/File Access*
 View Models
 Navigation*
* Richiede implementazione per piattaforma
Mobile Development Day 2014
Larchitettura: Core Component
Business Fa巽ade
 Espone uninterfaccia semplificata alla
logica di business
 Combina molte operazioni di business
in ununica operazione mascherandone
la reale complessit
 Riduce le dipendenze: il chiamante
esterno 竪 alloscuro dei dettagli
implementativi (relazioni, componenti)
Mobile Development Day 2014
Larchitettura: Core Component
Observer
 Publish/subscribe
 Disaccoppia la logica di business
dalla UI
 Il Business layer pu嘆 pubblicare
eventi
 La UI pu嘆 sottoscrivere gli eventi
pubblicati
Mobile Development Day 2014
Larchitettura: Core Component
Altri pattern tipici:
 Singleton
 Dependency Injection
 Async
Mobile Development Day 2014
Larchitettura: Application Layer
Application Layer
 Platform specific
 No UI controls, ViewModels
 Only data display class
 Interfaces, partial classes/methods
che ridefiniscono feature specifiche
dipendenti dalla piattaforma nella
core libraries
Mobile Development Day 2014
Larchitettura: User interface
User Interface Layer
 UI/display code and res
 Business object (Model)
classes o ViewModels 
controls
Mobile Development Day 2014
LA RICETTA ARCHITETTURALE:
UN CASO CONCRETO
DEMO
Mobile Development Day 2014
Architettura alternativa
Porting da WPF, Silverlight, Windows Phone:
Mobile Development Day 2014
Architettura alternativa
MVVM:
 % di condivisione del codice elevata
 GUI behavior testabile
Mobile Development Day 2014
Risorse
 http://docs.xamarin.com/
 Building Cross Platform
Applications
 Porting existing .NET apps
 Cross-Platform Starter Kit
Mobile Development Day 2014
Mobile App Architecture
All problems in computer science can
be solved by another level of
indirection.
David Wheeler
Grazie per lattenzione!
Ad

Recommended

Xamarin Robotics
Xamarin Robotics
Fabio Cozzolino
Xamarin
Xamarin
Fabio Cozzolino
Writing apps for android with .net
Writing apps for android with .net
Leonardo Alario
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
Fabio Cozzolino
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Fabio Cozzolino
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobile
Roberto Cappelletti
Community Days 2015 Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
Dan Ardelean
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#
Dan Ardelean
Unity 3D a C# developer's POV
Unity 3D a C# developer's POV
Leonardo Alario
Sa framework
Sa framework
Arnaldo Colombo
SOA wonderful World
SOA wonderful World
Francesco Arcieri
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Rishikese MR
Facebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challenge
Cristina Munoz
Facebook Architecture - Breaking it Open
Facebook Architecture - Breaking it Open
HARMAN Services
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
nkallen
Architecture of a Modern Web App
Architecture of a Modern Web App
scothis
Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
Nicol嘆 Carandini
Da Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritorno
Matteo Pagani
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
Cert04 70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Windows AppStudio, app without code
Windows AppStudio, app without code
Angelo Gino Varrati
Mobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
codeblock
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
Francesco Florio
MonoTouch, un anno dopo
MonoTouch, un anno dopo
Stefano Ottaviani
Wp app studio_new
Wp app studio_new
Piero Sbressa
Mobile User Experience
Mobile User Experience
Roberto Falcone
Mobile User Experience
Mobile User Experience
Digital Natives

More Related Content

Viewers also liked (9)

Unity 3D a C# developer's POV
Unity 3D a C# developer's POV
Leonardo Alario
Sa framework
Sa framework
Arnaldo Colombo
SOA wonderful World
SOA wonderful World
Francesco Arcieri
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Rishikese MR
Facebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challenge
Cristina Munoz
Facebook Architecture - Breaking it Open
Facebook Architecture - Breaking it Open
HARMAN Services
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
nkallen
Architecture of a Modern Web App
Architecture of a Modern Web App
scothis
Unity 3D a C# developer's POV
Unity 3D a C# developer's POV
Leonardo Alario
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Rishikese MR
Facebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challenge
Cristina Munoz
Facebook Architecture - Breaking it Open
Facebook Architecture - Breaking it Open
HARMAN Services
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
nkallen
Architecture of a Modern Web App
Architecture of a Modern Web App
scothis

Similar to C# Mobile application architecture (20)

Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
Nicol嘆 Carandini
Da Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritorno
Matteo Pagani
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
Cert04 70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Windows AppStudio, app without code
Windows AppStudio, app without code
Angelo Gino Varrati
Mobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
codeblock
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
Francesco Florio
MonoTouch, un anno dopo
MonoTouch, un anno dopo
Stefano Ottaviani
Wp app studio_new
Wp app studio_new
Piero Sbressa
Mobile User Experience
Mobile User Experience
Roberto Falcone
Mobile User Experience
Mobile User Experience
Digital Natives
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
Gaetano Patern嘆
Xamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷s
Francesco Bonacci
Un Approccio Model-Driven per lo Sviluppo di Applicazioni Mobili Native
Un Approccio Model-Driven per lo Sviluppo di Applicazioni Mobili Native
Gregorio Perego
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Nicol嘆 Carandini
Introduzione alle Universal App
Introduzione alle Universal App
Alessio Iafrate
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Stefano Ottaviani
Mob04 best practices for windows phone ui design
Mob04 best practices for windows phone ui design
DotNetCampus
Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
Nicol嘆 Carandini
Da Windows Phone a Windows 8: andata e ritorno
Da Windows Phone a Windows 8: andata e ritorno
Matteo Pagani
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
Cert04 70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
Introduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Windows AppStudio, app without code
Windows AppStudio, app without code
Angelo Gino Varrati
Mobile platforms development overview
Mobile platforms development overview
Alfredo Morresi
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVIT DI WINDOWS PHONE 8.1
codeblock
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
Francesco Florio
Wp app studio_new
Wp app studio_new
Piero Sbressa
Mobile User Experience
Mobile User Experience
Roberto Falcone
Mobile User Experience
Mobile User Experience
Digital Natives
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
Gaetano Patern嘆
Xamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷s
Francesco Bonacci
Un Approccio Model-Driven per lo Sviluppo di Applicazioni Mobili Native
Un Approccio Model-Driven per lo Sviluppo di Applicazioni Mobili Native
Gregorio Perego
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Sviluppare app per iOS e Android con Xamarin e Visual Studio
Nicol嘆 Carandini
Introduzione alle Universal App
Introduzione alle Universal App
Alessio Iafrate
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Stefano Ottaviani
Mob04 best practices for windows phone ui design
Mob04 best practices for windows phone ui design
DotNetCampus
Ad

C# Mobile application architecture

  • 1. Mobile Development Day 2014 Mobile App Architecture Leo Alario http://dotnetside.org/blogs/leo http://twitter.com/leo_alario leo.alario@gmail.com
  • 2. Mobile Development Day 2014 Agenda Come progettare e realizzare un'applicazione multipiattaforma utilizzando C# Come riutilizzare la logica di business condividendola con altre piattaforme Utilizzo di pattern e tecniche di codifica avanzate per garantire una quantit elevata di riutilizzo del codice Effettuare il porting di unapplicazione esistente (Windows Forms, Windows CE, WPF, ASP.NET e Silverlight), a determinate condizioni per嘆
  • 3. Mobile Development Day 2014 Silo approach Platform-specific Molte codebase Bassa manutenibilit Bassa innovazione Molti profili professionali Molto costoso
  • 4. Mobile Development Day 2014 Write once run anywhere way Orientate ai contenuti Frammentazione browser User experience scadente Scarsa interazione device Alti tassi di abbandono
  • 5. Mobile Development Day 2014 Cross-platform way Creazione di app native C# .NET - Mono Full Device API Visual/Xamarin Studio 2,6 miliardi di dispositivi
  • 6. Mobile Development Day 2014 Cross-platform way Android, iOS, Mac, Altri Windows - Phone/Store ALM Interazione UI avanzate Massima performance User experience nativa Riutilizzo degli skill, del team, dei tool e del codice! Minor costo!
  • 7. Mobile Development Day 2014 Perch辿 .NET e C#? LINQ Support Work With XML Easily Event Handling & Delegates Json.NET
  • 8. Mobile Development Day 2014 Perch辿 .NET e C#? Async/Await Task Parallel Library aka TPL
  • 9. Mobile Development Day 2014 La ricetta architetturale Separiamo la UI dal model! MVC Pattern MVP Pattern MVVM lapproccio Microsoft Suddividiamo lapplicazione in due sotto componenti: Core User interface
  • 10. Mobile Development Day 2014 Larchitettura Massima condivisione del codice tra le piattaforme! Come tutte le 束ricette損 pu嘆 essere personalizzata
  • 11. Mobile Development Day 2014 Larchitettura Stratificare l'architettura dell'applicazione: gestiamo la complessit sfruttando la 束scomposizione損 Layer debolmente accoppiati con i layer sottostanti Separation of responsibility (Layer e Classi) Polimorfismo/Abstraction -> platform- specific features (Interface, Interface, Interface! )
  • 12. Mobile Development Day 2014 Larchitettura: Core Component Layer tipici: Data layer (DL) Data Access Layer (DAL) SQLite + SQLite-NET ORM Service Access Layer (SAL) Business Layer (BL)
  • 13. Mobile Development Day 2014 Larchitettura: Core Component Che codice possiamo condividere? Core Application Logic Entities/Models (POCO Objects) Web Services (REST / SOAP) Data Access/File Access* View Models Navigation* * Richiede implementazione per piattaforma
  • 14. Mobile Development Day 2014 Larchitettura: Core Component Business Fa巽ade Espone uninterfaccia semplificata alla logica di business Combina molte operazioni di business in ununica operazione mascherandone la reale complessit Riduce le dipendenze: il chiamante esterno 竪 alloscuro dei dettagli implementativi (relazioni, componenti)
  • 15. Mobile Development Day 2014 Larchitettura: Core Component Observer Publish/subscribe Disaccoppia la logica di business dalla UI Il Business layer pu嘆 pubblicare eventi La UI pu嘆 sottoscrivere gli eventi pubblicati
  • 16. Mobile Development Day 2014 Larchitettura: Core Component Altri pattern tipici: Singleton Dependency Injection Async
  • 17. Mobile Development Day 2014 Larchitettura: Application Layer Application Layer Platform specific No UI controls, ViewModels Only data display class Interfaces, partial classes/methods che ridefiniscono feature specifiche dipendenti dalla piattaforma nella core libraries
  • 18. Mobile Development Day 2014 Larchitettura: User interface User Interface Layer UI/display code and res Business object (Model) classes o ViewModels controls
  • 19. Mobile Development Day 2014 LA RICETTA ARCHITETTURALE: UN CASO CONCRETO DEMO
  • 20. Mobile Development Day 2014 Architettura alternativa Porting da WPF, Silverlight, Windows Phone:
  • 21. Mobile Development Day 2014 Architettura alternativa MVVM: % di condivisione del codice elevata GUI behavior testabile
  • 22. Mobile Development Day 2014 Risorse http://docs.xamarin.com/ Building Cross Platform Applications Porting existing .NET apps Cross-Platform Starter Kit
  • 23. Mobile Development Day 2014 Mobile App Architecture All problems in computer science can be solved by another level of indirection. David Wheeler Grazie per lattenzione!