A partire da maggio 2024, Microsoft ha cessato il supporto per Xamarin. Ma per molte aziende questo significa un’opportunità: è il momento di migrare a .NET MAUI. Questo framework moderno è stato creato per semplificare la vita degli sviluppatori, unificando i progetti e rendendo più facile la gestione di app multipiattaforma. Mentre con Xamarin.Forms si dovevano creare progetti separati per ogni piattaforma, .NET MAUI consente di mantenere un’unica base di codice, riducendo i costi di sviluppo e manutenzione.
Stesi Srl è sponsor di 1nn0va da anni e, durante il .NET Saturday di Pordenone del 25 gennaio 2025, il nostro CIO Giovanni Silvestrin ha condiviso i suoi consigli per una migrazione fluida da Xamarin a .NET MAUI, sottolineando i vantaggi di Microsoft .NET in questo processo.
Xamarin.Forms vs .NET MAUI: le differenze
Con l’aggiornamento da Xamarin a .NET MAUI, Microsoft ha semplificato lo sviluppo multipiattaforma. A differenza di Xamarin, che richiedeva progetti separati per ogni piattaforma, .NET MAUI consente di gestire tutto da un’unica base di codice. Questo framework offre una gestione semplificata delle risorse, prestazioni superiori e supporto nativo migliorato. Strumenti come Hot Reload e nuovi pattern (MVU / Blazor) ottimizzano ulteriormente il processo, rendendo .NET MAUI una scelta strategica per ridurre i costi e migliorare le app.
Cosa fare prima della migrazione da Xamarin a. NET MAUI: la checklist
Prima di iniziare a migrare un progetto da Xamarin a .NET MAUI è importante portare a termine una serie di controlli. Nello specifico:
- Verifica la compatibilità del progetto con .NET MAUI.
- Prendi confidenza con .NET MAUI e i suoi strumenti.
- Fai un backup completo del progetto attuale.
- Pianifica una strategia per la migrazione da Xamarin, valutando tempistiche e rischi.
- Aggiorna Visual Studio all’ultima versione.
- Prepara ambienti di test adeguati.
- Rivedi il design UI/UX e adattalo ai nuovi controlli di .NET MAUI.
Tutti gli step per una migrazione da Xamarin a .NET MAUI senza intoppi
1. Crea un nuovo progetto .NET MAUI
Inizia valutando la complessità del tuo progetto Xamarin.Forms e identifica eventuali librerie di terze parti. Crea un nuovo progetto in .NET MAUI come punto di riferimento per capire come dovrà essere strutturato e configurato.
2. Aggiorna i file di progetto
Modifica i file .csproj per allinearli al nuovo formato .NET SDK e aggiorna i target framework per includere .NET MAUI (come net7.0-android). Cambia i riferimenti da Xamarin.Forms a Microsoft.Maui.Controls e aggiorna i pacchetti NuGet ai loro equivalenti MAUI.
3. Apporta le modifiche più importanti
.NET MAUI introduce diversi cambiamenti. Cambia sensibilmente il comportamento della UI per le grid e il comportamento del rendering per controlli grafici, per esempio, che sono sempre da mantenere in binding per ottenere il miglior risultato possibile (mentre è consigliabile abbandonare i rendering personalizzati a favore di gestori più performanti).
4. Gestisci risorse e funzionalità specifiche della piattaforma
Passa a MauiProgram.cs per la gestione delle risorse, aggiornando il modo in cui immagini, font e altre risorse sono utilizzate. Anche l’accesso alle API della piattaforma dovrebbe essere aggiornato, passando da DependencyService a .NET MAUI Handlers.
5. Usa l’Assistente per l’Upgrade .NET
Lo strumento .NET Upgrade Assistant può automatizzare buona parte della migrazione da Xamarin a .NET MAUI, gestendo aggiornamenti e configurazioni necessarie. Anche se alcune parti richiederanno ancora interventi manuali, questo tool può risparmiare molto tempo.
6. Aggiustamenti manuali e test
Dopo l’uso dell’assistente, risolvi eventuali errori di compilazione e fai test su tutte le piattaforme supportate (Android, iOS, Windows, macOS) per assicurarti che l’app funzioni come previsto. Ricostruisci il progetto regolarmente e rivedi il codice specifico della piattaforma.
Migrazione manuale o automatica? Pro e contro
La migrazione può essere fatta manualmente o con l’aiuto di strumenti automatici.
Migrazione manuale: richiede più tempo, ma ti dà il pieno controllo su ogni dettaglio del processo. È l’ideale per progetti complessi che richiedono adattamenti specifici.
Migrazione automatica: strumenti come il .NET Upgrade Assistant possono semplificare molto il processo, aggiornando file e dipendenze in automatico. Perfetto per progetti meno complessi o quando si vuole ridurre il tempo di transizione.
Adatta il tipo di migrazione alla complessità del tuo progetto e non avrai problemi.
Pro Tip per una migrazione senza stress
Ricorda che alcune librerie o componenti potrebbero non essere ancora supportati in .NET MAUI; quindi, investi del tempo extra nella fase di ricerca.
Sovrastima anche le tue tempistiche: ci saranno sempre piccoli problemi che richiederanno aggiustamenti e causeranno allungamenti nella tua time-line. Ricordati anche di preparare il tuo management a non avere risultati immediati.
Questa è una migrazione che richiede tempo prima di vedere i primi risultati e ogni step va fatto con cura.
Caso studio: silwa mobile reengineering
L’evoluzione delle applicazioni enterprise ha visto una significativa trasformazione con il passaggio da sistemi operativi dedicati, come Windows CE, a piattaforme più moderne e performanti come Android e .NET MAUI. L’app silwa mobile di Stesi ha vissuto direttamente questo cambiamento.
silwa è il Supply Chain Execution System (SCES) sviluppato da Stesi che combina le funzionalità di un WMS (Warehouse Management System) e di un MES (Manufacturing Execution System). Serve a gestire tutto il flusso logistico della merce all’interno degli stabilimenti dall’accettazione alla spedizione.
In passato, silwa era sviluppata e mantenuta su Windows CE. Il sistema operativo si prestava per essere utilizzato su dispositivi rugged e handheld scanner per magazzino e offriva stabilità e una lunga durata di supporto. Sviluppato in .NET Compact Framework con Visual Studio 2008 per Windows Embedded Compact 7 e successivamente con Visual Studio 2012 per EC 8, silwa mobile ha sfruttato le tecnologie Microsoft per garantire aggiornamenti stabili e compatibilità a lungo termine.
Tuttavia, con l’avvento di Android, le dinamiche del mercato enterprise sono cambiate. Dal 2014, Android ha iniziato ad acquisire sempre più mercato con la nascita di Android Enterprise e la crescente adozione di terminali basati su Android 7.0 Nougat. Nel 2016, Android deteneva già oltre il 70% del mercato mobile mondiale (enterprise e consumer), portando alla necessità di una nuova fase evolutiva per silwa mobile.
L’effetto della migrazione da Xamarin a .NET MAUI su silwa mobile
Nel 2020, l’annuncio di Microsoft della fine del supporto per Xamarin.Forms e il lancio di .NET MAUI, ha spinto Stesi a intraprendere una nuova migrazione di silwa mobile, questa volta verso .NET MAUI, per mantenere il progetto al passo con le nuove tecnologie e garantire un ciclo di sviluppo più efficiente.
I punti chiave della migrazione da Xamarin a .NET MAUI sono:
- Single Project e Multi-targeting: la migrazione ha permesso di consolidare i progetti per le diverse piattaforme (Android, iOS, Windows) in un unico codice base, semplificando la gestione e la manutenzione.
- Codice più semplice da mantenere: l’unificazione dei Renderers e l’introduzione degli Handlers ha migliorato la gestione dei controlli UI, riducendo la complessità del codice.
- Gestione asincrona ottimizzata: la migrazione ha risolto problemi di freeze dell’applicazione grazie a una migliore gestione dei processi asincroni, cruciale per la sincronizzazione dei dati in tempo reale, con mantenimento di sequenzialità per le funzioni operative.
- Sostituzione dei controlli di terze parti: alcuni controlli utilizzati in Xamarin non erano più supportati o performanti su MAUI, portando alla necessità di sostituirli con alternative native o personalizzate.
- Gestione risorse e UI revisionata: la revisione del layout e della gestione delle risorse ha portato anche a un miglioramento della performance dell’app, grazie all’introduzione di layout più efficienti tramite grid e con miglioramento della gestione binding.
Sfide vinte
Durante il processo di migrazione, il team di sviluppo di Stesi ha dovuto affrontare diversi aspetti tecnici, tra cui:
- Freeze dell’app e gestione asincrona: la migrazione a .NET MAUI ha richiesto una revisione della gestione asincrona per evitare blocchi dell’applicazione, che erano più frequenti su Xamarin.
- Riorganizzazione del codice e delle risorse: unificazione delle risorse precedentemente divise per piattaforme, rendendo il codice più modulare e facilmente mantenibile.
- Rimozione di controlli obsoleti: sostituzione dei controlli di terze parti non più compatibili, adottando soluzioni native integrate in .NET MAUI.
- Revisione layout XAML: le differenze tra Xamarin e MAUI nella gestione dei layout hanno portato alla necessità di revisionare il design, utilizzando nuovi layout o revisionando i precedenti per migliorare la user experience.
Risultati ottenuti
La migrazione a .NET MAUI ha portato numerosi vantaggi per silwa mobile, tra cui:
- Miglioramento delle performance: gli utenti hanno riscontrato un’app più reattiva e stabile, con tempi di risposta ridotti.
- Riduzione del codice: la semplificazione del progetto ha ridotto il numero di righe di codice necessario, migliorando la manutenibilità.
- Supporto per nuove tecnologie: l’adozione di .NET 6, il supporto per MVU pattern, e l’utilizzo di Hot Reload 2.0 hanno accelerato il ciclo di sviluppo e debugging, garantendo una maggiore efficienza e flessibilità quando veniva il momento di fare nuovi rilasci o aggiornamenti delle funzionalità.
FAQ: Domande e Risposte sulla migrazione da Xamarin a .NET MAUI
Durante il .NET Saturday di 1nn0va, sono emerse alcune domande riguardo alla migrazione da Xamarin a .NET MAUI e all’uso di dispositivi Android in ambiente enterprise. Ecco alcune delle domande più rilevanti e le risposte fornite dal nostro CIO, Giovanni Silvestrin.
- Quale metodo avete utilizzato per identificare i device e gestire le licenze su nuove versioni di Android, considerando che il MAC non è più accessibile dalle API?
Risposta:
“Abbiamo implementato un sistema basato su Android Device ID con una logica di abilitazione e disabilitazione intelligente delle licenze.”
- Avete mai riscontrato problemi di retrocompatibilità con dispositivi dei clienti che utilizzano versioni Android più datate?
Risposta:
“Attualmente no, i produttori di device Android per ambiente enterprise generalmente distribuiscono sul mercato dispositivi con più di una versione aggiornabile/compatibile del sistema, permettendo eventualmente di riadattare il proprio S.O. e l’applicativo agli ultimi avanzamenti tecnologici”
- Considereresti, al giorno d’oggi, di utilizzare componenti di terze parti per sviluppare da zero un’applicazione Android?
Risposta:
“Considerate le possibilità date nativamente da .Net Maui, lo consiglierei solo in caso di particolari necessità. In questi casi esistono comunque molti framework open source, aggiornati in modo continuo dalla community e sostenuti da un ampio team di sviluppatori, che rende disponibile un’abbondante varietà di controlli.”
Conclusione
Nonostante la fine del supporto per gli OS Microsoft in ambito mobile, l’IDE Visual Studio permette di sviluppare applicazioni per le piattaforme più diffuse in modalità cross-platform. Questo riduce i costi e i tempi di apprendimento per le aziende che migrano da Windows CE ad Android tramite .NET MAUI, garantendo prestazioni elevate e un’integrazione perfetta nel mondo enterprise.
Vuoi sapere di più su cosa fa un Full Stack Developer per la Supply Chain e logistica di magazzino? Scopri qui cosa fa e quanto guadagna.
Se sei un programmatore software e ti piacerebbe lavorare in una software house, conosciamoci! Scopri le posizioni aperte e inviaci la tua candidatura.