Full stack web and mobile development

Quali strumenti possiamo usare oggi per sviluppare applicazioni web e mobile?

La scorsa settimana io e il mio team abbiamo organizzato un evento gratuito per parlare di tecnologie moderne e delle varie modalità di sviluppo di applicazioni web e mobile. Potete trovare il programma dettagliato qui:

https://www.eventbrite.com/e/registrazione-full-stack-web-and-mobile-development-24434100051

Abbiamo cominciato parlando di architettura delle applicazioni, mostrando i più importanti principi dietro l'architettura e il design di un buon software. Spero che i partecipanti abbiamo ricevuto il messaggio che volevo trasmettere: ogni scelta deve essere fatta tenendo a mente il corretto “context”. Requisiti e design patterns, insieme al corretto punto di vista, sono le basi su cui costruire la giusta soluzione per specifiche esigenze.

Il mio amico e socio Carmine ha mostrato come il concetto di user experience sia importante nelle applicazioni moderne, mostrando alcuni dei principali strumenti che permettono di ottenere il feedback del cliente e testare la soluzione proposta. Un viaggio dal prototipo all'html per i client web e mobile basati su tecnologie web, o gli artefatti grafici per i restanti tipi di client.

Nel pomeriggio ho fatto una overview sullo sviluppo web usando due stack tecnologici: il .Net framework e lo stack MEAN (Mongo Express Angular Node).

Ho creato una web application usando i componenti Html e Css creati da Carmine, scomponendo le pagine in singoli pezzi e rendendole dinamiche, recuperando i contenuti dagli altri application layers. Usando la “dependency injection” supportata da Asp.Net MVC, ho creato due implementazioni della mia application logic: una implementazione fake che restituisce dati fake, e un'implementazione basata sull'interfaccia “IQueryable” offerta dal framework .NET. Nell'implementazione della application logic ho dichiarato una dipendenza IReadModel, usata per la gestione dello stack di lettura, con due implementazioni, una per Sql Server attraverso Entity Framework, e una per Mongo usando il driver C# ufficiale.

Per lo stack MEAN ho mostrato un esempio di John Papa disponibile qui: https://github.com/Breeze/breeze.js.samples/tree/master/node/zza-node-mongo. Si tratta di una semplice e completa applicazione che è un buon punto di partenza per esplorare AngularJS per la costruzione di una applicazione SPA (Single Page Application), NodeJS e Express per una soluzione di back-end cross-platform, utilizzando MongoDB come data storage.

Nella sessione successiva ho parlato di sviluppo mobile cross-platform, mostrando le differenze tra soluzioni ibride, usando Cordova e Ionic come esempio, e soluzioni native con i framework Xamarin Classic e Xamarin Forms. Il focus è stato sui requisiti che portano a scegliere una delle due soluzioni, dove in molte occasioni influiscono le skill degli svilupaptori coinvolti nello sviluppo: se si ha già esperienza con le tecnologie web, probabilmente Cordova e Ionic possono essere la scelta giusta, altrimenti se si è uno svilupaptore C#, Xamarin è la via più veloce.

Infine abbiamo parlato del mondo No-Sql, con un basilare confronto tra le soluzioni basate su RDMS e le soluzioni basate su database documentali, un caso particolare di tecnologia No-Sql. Purtroppo abbiamo avuto poco tempo, sono giusto riuscito a far vedere i concetti basilari dei database documentali No-Sql, con qualche esempio con MongoDB. L'idea della sessione era di intrigare i partecipanti, fornendo i concetti basilari e gli strumennti per cominciare a giocare con queste tecnologie.

Uno speciale ringraziamento va allo staff di Blexin e ai partecipanti, spero che la giornata sia stata utile e abbia ispirato le prossime soluzioni che chi c'era creerà sia a lavoro che nel tempo libero. Stiamo pensando di organizzare giornate specifiche su ognuno degli argomenti coperti all'evento, in modo da avere il tempo di approfondirli. Stay tuned.

Happy coding