Comprendere .NET MAUI e il futuro di Xamarin

Nel 2000, la Professional Developers Conference di Microsoft si occupava di preparare la scena per .NET, introducendo molte delle tecnologie che abbiamo utilizzato negli ultimi due decenni. Vent'anni dopo, è giusto dire che Microsoft ha premuto un pulsante di ripristino sull'espansione incontrollata di .NET e dei suoi numerosi framework per sviluppatori. A Build 2020, la società ha definito la sua roadmap per i prossimi vent'anni, basandosi sull'annuncio del Project Reunion.

Il futuro è un .NET

È possibile guardare indietro di sei anni circa per vedere le radici di oggi nell'open source di .NET e nella creazione di .NET Foundation. La piattaforma necessitava di un ente indipendente che gestisse la transizione dal vecchio .NET Framework a un nuovo .NET Core modulare privo di legacy. Quella transizione doveva includere più di Windows; doveva portare con sé i client mobili di Xamarin e le piattaforme di gioco 3-D di Unity, oltre a mirare a espandere la portata di .NET a macOS e Linux.

Questo ci porta al 2020 e all'imminente passaggio dal vecchio .NET Framework 4 al nuovo .NET 5, la prossima grande release di .NET Core con la maggior parte delle API e degli spazi dei nomi familiari di .NET Framework. Questa trasformazione vedrà l'inizio di grandi cambiamenti per gli strumenti di sviluppo Xamarin per dispositivi mobili e multipiattaforma di Microsoft, poiché Microsoft sposta gli sforzi di progettazione da Mono di Xamarin a .NET 5.

Portare Mono e .NET insieme in .NET 6

Una cosa è chiara: Microsoft non sta buttando via sia i suoi che i tuoi investimenti in Xamarin. Mono non andrà da nessuna parte ancora. Molti grandi progetti dipendono da Mono e vedremo Xamarin continuare a evolvere Mono per supportare le nuove versioni di Android e iOS. Ma se desideri nuove funzionalità e nuove API e un modello di sviluppo multipiattaforma più ampio, la tua futura strategia di sviluppo sarà basata su .NET 5 e sul programma di rilascio annuale di .NET in corso. Un .NET completo e unificato è ancora lontano e, sebbene .NET 5 rappresenterà un significativo passo avanti, non vedremo l'unificazione fino alla fine del 2021 e il rilascio pianificato della prossima versione di supporto a lungo termine, .NET 6.

L'intento non è quello di sostituire completamente Mono, ma di avere un set comune di librerie di classi e un'unica toolchain per .NET Core e per Mono, basandosi sul lavoro già in corso nelle funzionalità a livello di piattaforma come .NET Standard biblioteche. Ciò lascia una domanda intrigante: che aspetto avrà un'interfaccia utente multipiattaforma nel futuro convergente? Sebbene ci sia un'opzione multipiattaforma nel port di WinUI 3 della piattaforma Uno, con supporto per dispositivi mobili insieme a WebAssembly e macOS, i controlli forniti da Microsoft in WinUI sono controlli desktop di Windows e funzionano meglio nelle applicazioni desktop e tablet.

Evoluzione di un framework UI multipiattaforma per .NET

Xamarin offre un'alternativa a WinUI per lo sviluppo multipiattaforma. La sua strategia multipiattaforma si basa su un mix di supporto XAML per i controlli nativi sia per iOS che per Android insieme ai propri Xamarin Forms multipiattaforma. Xamarin Forms è una piattaforma di sviluppo MVVM (model-view-viewmodel) a sé stante, con il proprio aspetto di controllo basato sul linguaggio di progettazione dei materiali di Android. Xamarin Forms offre alle app iOS e Android un aspetto coerente e allo stesso tempo consente loro di accedere a funzionalità e servizi nativi.

Con .NET 6 destinato a unificare le varie piattaforme .NET, Xamarin Forms è la base logica per un nuovo set di strumenti dell'interfaccia utente mobile e un nuovo framework dell'interfaccia utente multipiattaforma per .NET. Microsoft ha presentato questo nuovo approccio alla Build 2020, chiamandolo .NET Multiplatform App UI (MAUI).

.NET MAUI è la nuova generazione di Xamarin Forms, progettata per consentire agli sviluppatori di creare un'app una sola volta in un singolo progetto di Visual Studio con una singola base di codice, indirizzata a qualsiasi dispositivo supportato. L'obiettivo è fornire una struttura del progetto semplificata. Piuttosto che una singola soluzione con progetti separati per ciascuna piattaforma a cui ti rivolgi, con MAUI un singolo progetto conterrà le risorse necessarie per indirizzare piattaforme specifiche. Se hai bisogno di API native per accedere a servizi specifici del dispositivo, queste possono essere raggruppate in una vista piattaforme e utilizzate in fase di compilazione quando si scelgono build per ciascuna piattaforma. Oltre al codice della piattaforma, puoi raggruppare le risorse che verranno utilizzate dal tuo XAML, incluse immagini e caratteri, offrendoti un posto dove gestire tutti gli elementi della tua applicazione.

Il nuovo modello di progetto fornito con .NET 6 è la chiave di questo approccio, poiché applica un raggruppamento più logico ai moduli utilizzati nelle app multipiattaforma e al modo in cui il codice viene creato e distribuito. Tuttavia, nonostante le modifiche strutturali ai progetti, il codice che scrivi domani dovrebbe essere molto simile a quello di oggi, ma più facile da distribuire su più piattaforme e da tenere aggiornato con le modifiche alle API della piattaforma e alle risorse di progettazione dell'applicazione.

La strada per .NET MAUI

Mancano ancora mesi a vedere il codice .NET MAUI utilizzabile, poiché dipende dalle funzionalità di .NET 6 SDK, sebbene un repository GitHub sia già aperto con alcune delle implementazioni iniziali. Quando un'anteprima verrà spedita verso la fine del 2020, ciò che otterremo dovrebbe essere abbastanza simile ai moduli Xamarin esistenti, che continueranno a essere sviluppati in parallelo con .NET MAUI. Le modifiche principali riguarderanno la struttura dei progetti, con un nuovo spazio dei nomi che verrà spostato dallo spazio dei nomi di Xamarin a System di .NET.

La roadmap pubblicata per .NET MAUI suggerisce che inizialmente avremo una build di anteprima basata su una ridenominazione dell'attuale versione di Xamarin Forms, con alcune semplificazioni e nuove funzionalità provenienti dalle nuove funzionalità di .NET 6. Ulteriori modifiche arriveranno durante il 2021 con l'evoluzione di .NET MAUI e .NET 6, con i controlli macOS e Windows che si uniranno ad Android e iOS entro l'estate 2021. Dovresti essere in grado di fornire applicazioni unificate entro la prevista versione di novembre 2021, con una release candidate prevista per Settembre 2021.

Microsoft sta pianificando altre modifiche a Xamarin nel periodo di tempo .NET 6, spostando altre librerie Xamarin in System e rinominando Xamarin.iOS e Xamarin.Android in .NET per iOS e .NET per Android. È una mossa logica, anche se un po 'triste per quelli di noi che hanno seguito lo sviluppo di Xamarin sin dai primi giorni di Mono.

Forse un modo più positivo di pensarlo è che, con il passaggio a un .NET Core multipiattaforma come fondamento di tutte le cose .NET, non è tanto Microsoft ad assorbire Xamarin quanto Xamarin che diventa il cuore del futuro open source di .NET . Questa è una buona eredità per il progetto Mono.