Che cos'è .NET MAUI?

.NET Multi-Platform App UI (.NET MAUI) è un framework multipiattaforma per la creazione di app native per dispositivi mobili e desktop con C# e XAML.

Usando .NET MAUI, è possibile sviluppare app che possono essere eseguite in Android, iOS, macOS e Windows da una singola codebase condivisa.

Piattaforme supportate da .NET MAUI.

.NET MAUI è open source ed è l'evoluzione di Xamarin.Forms, estesa da scenari mobili a desktop, con controlli dell'interfaccia utente ricompilati dal punto di vista delle prestazioni e dell'estendibilità. Se in precedenza si usa Xamarin.Forms per creare interfacce utente multipiattaforma, si noteranno molte somiglianze con .NET MAUI. Esistono tuttavia alcune differenze. Usando .NET MAUI, è possibile creare app multipiattaforma usando un singolo progetto, ma è possibile aggiungere codice sorgente e risorse specifiche della piattaforma, se necessario. Uno degli obiettivi principali di .NET MAUI è consentire all'utente di implementare quanta più logica dell'app e quanto più layout dell'interfaccia utente possibile in un'unica codebase.

Chi è .NET MAUI per

.NET MAUI è per gli sviluppatori che vogliono:

  • Scrivere app multipiattaforma in XAML e C#, da una singola code-base condivisa in Visual Studio.
  • Condividere il layout e la progettazione dell'interfaccia utente tra le piattaforme.
  • Condividere codice, test e logica di business tra piattaforme.

Funzionamento di .NET MAUI

.NET MAUI unifica le API Android, iOS, macOS e Windows in un'unica API che consente un'esperienza di sviluppo WORA (Write-Once Run-Anywhere), offrendo inoltre accesso avanzato a ogni aspetto di ogni piattaforma nativa.

.NET 6 o versione successiva offre una serie di framework specifici della piattaforma per la creazione di app: .NET per Android, .NET per iOS, .NET per macOS e libreria Windows UI 3 (WinUI 3). Questi framework dispongono tutti dell'accesso alla stessa libreria di classi di base .NET. Questa libreria astrae i dettagli della piattaforma sottostante lontano dal codice. BCL dipende dal runtime .NET per fornire l'ambiente di esecuzione per il codice. Per Android, iOS e macOS, l'ambiente viene implementato da Mono, un'implementazione del runtime .NET. In Windows.NET CoreCLR fornisce l'ambiente di esecuzione.

Anche se il BCL consente alle app in esecuzione su piattaforme diverse di condividere la logica di business comune, le varie piattaforme hanno diversi modi per definire l'interfaccia utente per un'app e forniscono modelli diversi per specificare come gli elementi di un'interfaccia utente comunicano e interoperabilità. È possibile creare l'interfaccia utente per ogni piattaforma separatamente usando il framework specifico della piattaforma appropriato (.NET per Android, .NET per iOS, .NET per macOS o WinUI 3), ma questo approccio richiede quindi di mantenere una code-base per ogni singola famiglia di dispositivi.

.NET MAUI offre un unico framework per la compilazione delle interfacce utente per le app per dispositivi mobili e desktop. Il diagramma seguente mostra una visualizzazione generale dell'architettura di un'app MAUI .NET:

Diagramma dell'architettura .NET MAUI.

In un'app .NET MAUI si scrive codice che interagisce principalmente con l'API MAUI .NET (1). .NET MAUI usa quindi direttamente le API della piattaforma nativa (3). Inoltre, il codice dell'app può esercitare direttamente le API della piattaforma (2), se necessario.

Le app MAUI .NET possono essere scritte in PC o Mac e compilate in pacchetti di app native:

  • App Android compilate con .NET MAUI compilate da C# in linguaggio intermedio (IL) che viene quindi compilato in un assembly nativo quando l'app viene avviata.
  • Le app iOS compilate con .NET MAUI sono completamente in anticipo (AOT) compilate da C# nel codice dell'assembly ARM nativo.
  • le app macOS create usando .NET MAUI usano Mac Catalyst, una soluzione di Apple che porta l'app iOS compilata con UIKit al desktop e lo aumenta con altre API appKit e piattaforma in base alle esigenze.
  • Le app windows create usando .NET MAUI usano la libreria Windows UI 3 (WinUI 3) per creare app native destinate al desktop di Windows. Per altre informazioni su WinUI 3, vedere Libreria dell'interfaccia utente di Windows.

Nota

La creazione di app per iOS e macOS richiede un Mac.

Che cosa fornisce .NET MAUI

.NET MAUI offre una raccolta di controlli che possono essere usati per visualizzare i dati, avviare azioni, indicare attività, visualizzare raccolte, selezionare dati e altro ancora. Oltre a una raccolta di controlli, .NET MAUI fornisce anche:

  • Motore di layout elaborato per la progettazione di pagine.
  • Più tipi di pagina per la creazione di tipi di spostamento complessi, come i drawer.
  • Supporto per il data binding, per modelli di sviluppo più eleganti e gestibili.
  • Possibilità di personalizzare i gestori per migliorare il modo in cui vengono presentati gli elementi dell'interfaccia utente.
  • API multipiattaforma per l'accesso alle funzionalità del dispositivo nativo. Queste API consentono alle app di accedere alle funzionalità del dispositivo, ad esempio GPS, accelerometro e stati di rete e batteria. Per altre informazioni, vedere API multipiattaforma per le funzionalità del dispositivo.
  • Funzionalità grafica multipiattaforma, che fornisce un'area di disegno che supporta forme e immagini di disegno, operazioni di composizione e trasformazioni grafiche degli oggetti.
  • Un singolo sistema di progetto che usa più destinazione per Android, iOS, macOS e Windows. Per altre informazioni, vedere Progetto singolo .NET MAUI.
  • Ricarica a caldo .NET, in modo da poter modificare sia il codice sorgente XAML che il codice sorgente gestito durante l'esecuzione dell'app, quindi osservare il risultato delle modifiche senza ricompilare l'app. Per altre informazioni, vedere Ricarica ad accesso frequente .NET.

API multipiattaforma per le funzionalità del dispositivo

.NET MAUI offre API multipiattaforma per le funzionalità del dispositivo native. Esempi di funzionalità fornite da .NET MAUI per l'accesso alle funzionalità del dispositivo includono:

  • Accesso ai sensori, ad esempio l'accelerometro, la bussola e il giroscopio nei dispositivi.
  • Possibilità di controllare lo stato di connettività di rete del dispositivo e rilevare le modifiche.
  • Fornire informazioni sul dispositivo in esecuzione sull'app.
  • Copiare e incollare il testo negli Appunti di sistema tra le app.
  • Selezionare un file singolo o più dal dispositivo.
  • Archiviare i dati in modo sicuro come coppie chiave/valore.
  • Usare motori di sintesi vocale predefiniti per leggere il testo dal dispositivo.
  • Avviare i flussi di autenticazione basati su browser che ascoltano un callback a un URL registrato dall'app specifico.

Progetto singolo

Il singolo progetto .NET MAUI accetta le esperienze di sviluppo specifiche della piattaforma che in genere si verificano durante lo sviluppo di app e le astraggono in un singolo progetto condiviso che può essere impiegato per Android, iOS, macOS e Windows.

Il singolo progetto .NET MAUI offre un'esperienza di sviluppo multipiattaforma semplificata e coerente, indipendentemente dalle piattaforme destinate. Il progetto singolo .NET MAUI offre le funzionalità seguenti:

  • Un singolo progetto condiviso che può essere abilitata per Android, iOS, macOS e Windows.
  • Selezione di destinazione di debug semplificata per l'esecuzione delle app .NET MAUI.
  • File di risorse condivisi all'interno del singolo progetto.
  • Un singolo manifesto dell'app che specifica il titolo, l'ID e la versione dell'app.
  • Accesso alle API e agli strumenti specifici della piattaforma quando necessario.
  • Un singolo punto di ingresso dell'app multipiattaforma.

Il singolo progetto .NET MAUI è abilitato usando multi-targeting e l'uso di progetti in stile SDK. Per altre informazioni sul progetto singolo .NET MAUI, vedere Progetto singolo .NET MAUI.

Ricaricamento rapido

.NET MAUI include il supporto per il ricaricamento frequente di .NET, che consente di modificare il codice sorgente gestito durante l'esecuzione dell'app, senza dover sospendere manualmente o colpire un punto di interruzione. È quindi possibile applicare le modifiche del codice all'app in esecuzione senza ricompilazione.

.NET MAUI include anche il supporto per il ricaricamento frequente XAML, che consente di salvare i file XAML e di visualizzare le modifiche riflesse nell'app in esecuzione senza ricompilazione. Inoltre, lo stato di spostamento e i dati verranno mantenuti, consentendo di scorrere rapidamente l'interfaccia utente senza perdere il proprio posto nell'app.