C# Mobile application architecture
-
Upload
leonardo-alario -
Category
Presentations & Public Speaking
-
view
404 -
download
2
Transcript of C# Mobile application architecture
Mobile Development Day 2014
Mobile App ArchitectureLeo Alario
http://dotnetside.org/blogs/leohttp://twitter.com/[email protected]
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 Applicati
ons• 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!