C# Mobile application architecture
-
Upload
leonardo-alario -
Category
Presentations & Public Speaking
-
view
303 -
download
2
Transcript of C# Mobile application architecture
![Page 1: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/1.jpg)
Mobile Development Day 2014
Mobile App ArchitectureLeo Alario
http://dotnetside.org/blogs/leohttp://twitter.com/[email protected]
![Page 2: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/8.jpg)
Mobile Development Day 2014
Perché .NET e C#?
• Async/Await• Task Parallel Library aka TPL
![Page 9: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/16.jpg)
Mobile Development Day 2014
L’architettura: Core Component
Altri pattern tipici:• Singleton• Dependency Injection• Async
![Page 17: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/17.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/18.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/19.jpg)
Mobile Development Day 2014
LA RICETTA ARCHITETTURALE: UN CASO CONCRETO
DEMO
![Page 20: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/20.jpg)
Mobile Development Day 2014
Architettura alternativa
Porting da WPF, Silverlight, Windows Phone:
![Page 21: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/21.jpg)
Mobile Development Day 2014
Architettura alternativa
MVVM:• % di condivisione del codice elevata• GUI behavior testabile
![Page 22: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/22.jpg)
Mobile Development Day 2014
Risorse
• http://docs.xamarin.com/• Building Cross Platform Applicati
ons• Porting existing .NET apps• Cross-Platform Starter Kit
![Page 23: C# Mobile application architecture](https://reader035.fdocuments.us/reader035/viewer/2022070321/5589e6b2d8b42aa50c8b4653/html5/thumbnails/23.jpg)
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!