c# mobile application architecture

23
Mobile Development Day 2014 Mobile App Architecture Leo Alario http://dotnetside.org/blogs/leo http://twitter.com/leo_alario [email protected]

Upload: leonardo-alario

Post on 24-Jun-2015

349 views

Category:

Presentations & Public Speaking


2 download

TRANSCRIPT

Page 1: C# Mobile application architecture

Mobile Development Day 2014

Mobile App ArchitectureLeo Alario

http://dotnetside.org/blogs/leohttp://twitter.com/[email protected]

Page 2: C# Mobile application architecture

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ò

Page 3: C# Mobile application architecture

Mobile Development Day 2014

Silo approach

• Platform-specific • Molte codebase • Bassa manutenibilità• Bassa innovazione• Molti profili professionali• Molto costoso

Page 4: C# Mobile application architecture

Mobile Development Day 2014

Write once run anywhere way

• Orientate ai contenuti • Frammentazione browser• User experience scadente• Scarsa interazione device• Alti tassi di abbandono

Page 5: C# Mobile application architecture

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

Page 6: C# Mobile application architecture

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!

Page 7: C# Mobile application architecture

Mobile Development Day 2014

Perché .NET e C#?

• LINQ Support• Work With XML Easily • Event Handling & Delegates• Json.NET

Page 8: C# Mobile application architecture

Mobile Development Day 2014

Perché .NET e C#?

• Async/Await• Task Parallel Library aka TPL

Page 9: C# Mobile application architecture

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

Page 10: C# Mobile application architecture

Mobile Development Day 2014

L’architettura

Massima condivisione del codice tra le piattaforme!

Come tutte le «ricette» può essere personalizzata

Page 11: C# Mobile application architecture

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! )

Page 12: C# Mobile application architecture

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)

Page 13: C# Mobile application architecture

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

Page 14: C# Mobile application architecture

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)

Page 15: C# Mobile application architecture

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

Page 16: C# Mobile application architecture

Mobile Development Day 2014

L’architettura: Core Component

Altri pattern tipici:• Singleton• Dependency Injection• Async

Page 17: C# Mobile application architecture

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

Page 18: C# Mobile application architecture

Mobile Development Day 2014

L’architettura: User interface

User Interface Layer• UI/display code and res• Business object (Model)

classes o ViewModels controls

Page 19: C# Mobile application architecture

Mobile Development Day 2014

LA RICETTA ARCHITETTURALE: UN CASO CONCRETO

DEMO

Page 20: C# Mobile application architecture

Mobile Development Day 2014

Architettura alternativa

Porting da WPF, Silverlight, Windows Phone:

Page 21: C# Mobile application architecture

Mobile Development Day 2014

Architettura alternativa

MVVM:• % di condivisione del codice elevata• GUI behavior testabile

Page 23: C# Mobile application architecture

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!