SlideShare 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 un’applicazione 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 l’approccio Microsoft
Suddividiamo l’applicazione in due sotto componenti:
• Core
• User interface
Mobile Development Day 2014
L’architettura
Massima condivisione del codice tra le piattaforme!
Come tutte le «ricette» può essere personalizzata 
Mobile Development Day 2014
L’architettura
• 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
L’architettura: 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
L’architettura: 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
L’architettura: Core Component
Business Façade
• Espone un’interfaccia semplificata alla
logica di business
• Combina molte operazioni di business
in un’unica operazione mascherandone
la reale complessità
• Riduce le dipendenze: il chiamante
esterno è all’oscuro dei dettagli
implementativi (relazioni, componenti)
Mobile Development Day 2014
L’architettura: 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
L’architettura: Core Component
Altri pattern tipici:
• Singleton
• Dependency Injection
• Async
Mobile Development Day 2014
L’architettura: 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
L’architettura: 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 l’attenzione! 

More Related Content

PPTX
Xamarin Robotics
PPTX
PPTX
Writing apps for android with .net
PPTX
Sviluppo apps multipiattaforma con visual studio e xamarin
PPTX
Costruire app per WinPhone, iOS e Android con C# e Xamarin
PPTX
Sviluppo di applicazioni web in ambito mobile
PPTX
Community Days 2015 Introduzione a Xamarin
PPTX
Sviluppo di app cross platform con xamarin e C#
Xamarin Robotics
Writing apps for android with .net
Sviluppo apps multipiattaforma con visual studio e xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Sviluppo di applicazioni web in ambito mobile
Community Days 2015 Introduzione a Xamarin
Sviluppo di app cross platform con xamarin e C#

Viewers also liked (9)

PPTX
Unity 3D a C# developer's POV
PPTX
Sa framework
PPT
SOA wonderful World
PPTX
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
PPTX
Facebook architecture presentation: scalability challenge
PDF
Facebook Architecture - Breaking it Open
PPT
7 Stages of Scaling Web Applications
KEY
Big Data in Real-Time at Twitter
PDF
Architecture of a Modern Web App
Unity 3D a C# developer's POV
Sa framework
SOA wonderful World
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Facebook architecture presentation: scalability challenge
Facebook Architecture - Breaking it Open
7 Stages of Scaling Web Applications
Big Data in Real-Time at Twitter
Architecture of a Modern Web App
Ad

Similar to C# Mobile application architecture (20)

PPTX
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
PDF
Smau milano 2012 arena social media davide-senatore
PPTX
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
PDF
Mobile Development: una introduzione per Web Developers
PPTX
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
PPTX
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
PDF
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
PPTX
Introduzione a DotNetNuke
PPTX
Progettazione e sviluppo di un'applicazione Web Basata su tecnologia Share Po...
ODP
Android base day1
PPTX
Azure Web Apps: portare il tuo sito sul cloud
PPTX
Sviluppare una app mobile net oriented
PPTX
INTRO TO XAMARIN
PPTX
Introduction to iOS development with Xamarin
PDF
System integration: Drupal tra Alfresco ed Ext JS
PDF
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
PDF
Visual COBOL - Conoscere Visual COBOL- Micro Focus
PPTX
Sviluppare Azure Web Apps
PPTX
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
PPTX
Crea servizi REST per la tua App con ASP.NET 5
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Smau milano 2012 arena social media davide-senatore
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Mobile Development: una introduzione per Web Developers
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Introduzione a DotNetNuke
Progettazione e sviluppo di un'applicazione Web Basata su tecnologia Share Po...
Android base day1
Azure Web Apps: portare il tuo sito sul cloud
Sviluppare una app mobile net oriented
INTRO TO XAMARIN
Introduction to iOS development with Xamarin
System integration: Drupal tra Alfresco ed Ext JS
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Visual COBOL - Conoscere Visual COBOL- Micro Focus
Sviluppare Azure Web Apps
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Crea servizi REST per la tua App con ASP.NET 5
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 un’applicazione 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 l’approccio Microsoft Suddividiamo l’applicazione in due sotto componenti: • Core • User interface
  • 10. Mobile Development Day 2014 L’architettura Massima condivisione del codice tra le piattaforme! Come tutte le «ricette» può essere personalizzata 
  • 11. Mobile Development Day 2014 L’architettura • 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 L’architettura: 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 L’architettura: 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 L’architettura: Core Component Business Façade • Espone un’interfaccia semplificata alla logica di business • Combina molte operazioni di business in un’unica operazione mascherandone la reale complessità • Riduce le dipendenze: il chiamante esterno è all’oscuro dei dettagli implementativi (relazioni, componenti)
  • 15. Mobile Development Day 2014 L’architettura: 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 L’architettura: Core Component Altri pattern tipici: • Singleton • Dependency Injection • Async
  • 17. Mobile Development Day 2014 L’architettura: 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 L’architettura: 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 l’attenzione! 