c# mobile application architecture

Post on 24-Jun-2015

371 Views

Category:

Presentations & Public Speaking

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Mobile Development Day 2014

Mobile App ArchitectureLeo Alario

http://dotnetside.org/blogs/leohttp://twitter.com/leo_alarioleo.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

Mobile App Architecture

All problems in computer science can be solved by another level of indirection.

David Wheeler

Grazie per l’attenzione!

top related