Evento XeDotNet dedicato a .NET MAUI: evoluzione di Xamarin Forms che permette di creare app desktop e per dispositivi mobili, native e multipiattaforma da una singola codebase C#.
2. MAUI Beer App
Il birrificio fondato nel 2007 da James Watt e Martin
Dickie, a Fraserburgh, dove ha prodotto la prima birra
nell'aprile del 2007.
Diverso da tutte le altre birrerie del resto del mondo hanno
cercato di produrre birre sempre più ricercate, infatti nel
2009 realizzano una birra da 32% ABV (Tactical Nuclear
Penguin), e nel 2010 ne producono una da 55% ABV (The
End of History)
Il catalogo DIY DOG contiene tutte le ricette delle birre
prodotte fino al 2019.
https://punkapi.com/
Progetto opensource di api pubbliche per accedere ai dati del
catagolo DIY DOG.
https://github.com/bortolin/MauiBeerApp
3. Cosa è .Net MAUI (Multi-platform Application User Interface)
.NET MAUI è un framework
multipiattaforma per la creazione di app
desktop e mobili native con C# e XAML.
.NET MAUI è open source ed è
l'evoluzione di Xamarin.Forms basata su
.NET 6.
Utilizzando .NET MAUI, puoi costruire
app mobile che possono essere eseguite
su Windows, Android, iOS, iPadOS,
macOS (Linux, Tizen).
4. Usare .NET MAUI
.NET MAUI è per gli sviluppatori che:
• Vogliono scrivere app multipiattaforma in
XAML (o Blazor) e C#, da una singola base di
codice condivisa in Visual Studio (VS Code).
• Condividere il layout e il design
dell'interfaccia utente su più piattaforme.
• Condividere codice, test e logica di busimess
su più piattaforme.
• Devono migrare da Xamarin Forms
5. • Archiettura dell piattaforma differente (integrata con .Net 6)
• Struttura del progetto (Single Project multi targhet e csproj SDK)
• Piattaforme supportate (Android, iOS, macOS, WinUI, Tizen, Linux)
• Supporto alla .NET CLI (compatibile con Visual Studio Code)
• Architettura di render più efficente (Handler)
• Gestione dei file di risorse (gestione centralizzata)
• Supporto “Hot Reload”
Xamarin Forms -> .NET MAUI (1/2)
6. .NET MAUI: what's new (2/2)
• Graphics APIs (Microsoft.Maui.Graphics)
• Configurazione startup, Dependency Injection (.NET Generic Host)
• Accessibility (Semantic properties)
• Pattern supportati (MVVM, MVU, RxUI, Blazor hybrid)
• Cross-platform APIs (Microsoft.Maui.Essentials)
• Multiple Windows (Android, iOS on iPad, Mac Catalyst, and Windows)
7. Installare .Net MAUI
• Install Visual Studio 2022 or Visual
Studio 2022 for Mac 17.4 Preview
• Aggiungere il workload specifico
“.NET Multi-platform App UI
development”
• Per utilizzaro con .Net CLI o Visual
Studio Code, installazione degli
workloads opzionali di .NET 6.0 SDK
da riga di comando
8. Come lavora .NET MAUI
• .NET MAUI fornisce una serie di framework
specifici della piattaforma per la creazione di
app:
• .NET for Android
• .NET for iOS
• .NET for macOS
• Windows UI (WinUI) Library
• Tutti i framework hanno accesso alla stessa
libreria di classi di base .NET 6 (BCL)
• La BCL astrae i dettagli della piattaforma
sottostante dal tuo codice
• In un'app .NET MAUI tu scrivi il codice che
normalmente integragisce con le .NET MAUI
API (1)
• .NET MAUI poi consuma direttamente le API
native della piattaforma specifica (3)
• In aggiunta, il codice della tua app puo
accedere anche direttamente alle API native
della piattaforma se necessario. (2)
9. Supported platforms
• Android 5.0 (API 21) or higher.
• iOS 10 or higher.
• macOS 10.15 or higher (using Mac Catalyst).
• Windows 11 and Windows 10 version 1809 or higher, using Windows UI Library (WinUI) 3.
• Tizen, supported by Samsung.
• Linux, supported by the community.
Le app .NET MAUI Blazor hanno i seguenti requisiti aggiuntivi:
• Android 7.0 (API 24) or higher is required
• iOS 14 or higher is required.
• macOS 11 or higher, using Mac Catalyst.
10. Singolo Progetto e supporto alla .Net CLI
Con Xamarin.Forms, gli sviluppatori avevano
problemi a lavorare con più progetti destinati a
più piattaforme:
• Mantenere organizzati immagini, caratteri e
codice relativo alla piattaforma.
• Aggiunta di dipendenze diverse e risoluzione
delle stesse se vengono referenziate come
pacchetti NuGet.
.NET MAUI adesso ha un singolo Progetto e
utilizza il nuovo file csproj "Microsoft.NET.Sdk”
Supporta la .Net CLI da riga di comando per
compilare, sviluppare, eseguire e pubblicare.
https://subscribe.packtpub.com/getting-started-with-microsoft-net-maui/
11. Singolo Progetto Build & Debug
https://subscribe.packtpub.com/getting-started-with-microsoft-net-maui/
Non è più necessario modificare il
progetto di avvio
È possibile utilizzare il nuovo "Microsoft Corporation
Subsystem for Android (TM)" come emulatore Android
Per compilare per progetti iOS o
Mac è comunque necessario un
"Mac build host"
12. Complete support for hot reloads
.NET Hot Reload is a new feature will allow you to make
live edits to the source code of your .NET
MAUI application while it is running, reducing the number of
times you need to rebuild your application.
13. Startup MAUI App
Le app .NET Multi-platform App UI (.NET MAUI) vengono avviate tramite l'host generico .NET.
(Come ASP.net Core)
Ciò consente di inizializzare le app da un'unica posizione e offre la possibilità di configurare font, servizi e
librerie di terze parti.
14. Xamarin Essential & Toolkit
Xamarin Essential è ora integrato all’interno di .Net
MAUI basta aggiungere “<UseMaui>true</UseMaui>” nel
file .csproj
The .NET MAUI Toolkit does not yet include all of the
amazing community contributions from the Xamarin
Community Toolkit.
https://github.com/CommunityToolkit/Maui
15. .Net MAUI - Multi pattern
.NET MAUI supporta più di un “pattern”
per lo sviluppo delle applicazioni:
• MVVM (Model-View-ViewModel)
• MVU (Model-View-Update)
• Blazor
• ReactiveUI
16. MVU - Comet C# & Faboulus F#
Model View Update (MVU)
pattern (aka The Elm Architecture)
https://github.com/dotnet/Comet https://fabulousfx.github.io/
https://guide.elm-lang.org/architecture/
17. Evoluzione dell’architettura
Xamarin forms use renderer MAUI use handler
Better performance and start up
https://www.youtube.com/watch?v=6PvL398l_y8
Surfing in MAUI: Xamarin.Forms Renderers vs .NET MAUI Handlers
https://github.com/jsuarezruiz/xamarin-forms-to-net-maui/tree/main/Handlers
18. Renderer vs Handler
Xamarin Forms Redered New MAUI Handler
Xamarin Forms use reflection for discover at start up
del custom render
In MAUI configure handler at start up
Redered are tightly coupled to Xamarin
Forms components
20. Migrate app from Xamarin.Forms
Non è necessario riscrivere da zero le app Xamarin.Forms da zero.
Tuttavia, dovrai apportare una piccola quantità di modifiche al codice a ciascuna app.
Puoi usare le funzionalità di un singolo progetto senza unire tutti i tuoi progetti Xamarin.Forms in un unico Progetto
Per eseguire la migrazione di un'app Xamarin.Forms a .NET 6 e aggiornare il codice a .NET MAUI, devi effettuare le seguenti
operazioni:
• Converti i progetti da .NET Framework in .NET SDK (csproj).
• Aggiorna gli spazi dei nomi.
• Aggiorna tutti i pacchetti NuGet incompatibili.
• Risolvi eventuali modifiche all'API (breaking changes).
Oppure usare il tool .NET Upgrade Assistant
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
https://docs.microsoft.com/en-us/dotnet/maui/get-started/migrate
Risorse utili:
https://arctouch.com/blog/migrate-xamarin-forms-dotnet-maui/