Vad är .NET MAUI?
.NET Multi-platform App UI (.NET MAUI) är ett plattformsoberoende ramverk för att skapa interna mobil- och skrivbordsappar med C# och XAML.
Med .NET MAUI kan du utveckla appar som kan köras på Android, iOS, macOS och Windows från en enda delad kodbas.
.NET MAUI är öppen källkod och är utvecklingen av Xamarin.Forms, utökad från mobila till stationära scenarier, med gränssnittskontroller som återskapats från grunden för prestanda och utökningsbarhet. Om du tidigare har använt Xamarin.Forms för att skapa plattformsoberoende användargränssnitt ser du många likheter med .NET MAUI. Det finns dock också vissa skillnader. Med hjälp av .NET MAUI kan du skapa appar för flera plattformar med ett enda projekt, men du kan lägga till plattformsspecifik källkod och resurser om det behövs. Ett av huvudsyftena med .NET MAUI är att du ska kunna implementera så mycket av din applogik och användargränssnittslayout som möjligt i en enda kodbas.
Vem .NET MAUI är för
.NET MAUI är till för utvecklare som vill:
- Skriv plattformsoberoende appar i XAML och C# från en enda delad kodbas i Visual Studio.
- Dela användargränssnittslayout och design på olika plattformar.
- Dela kod, tester och affärslogik mellan plattformar.
Så här fungerar .NET MAUI
.NET MAUI förenar Android-, iOS-, macOS- och Windows-API:er till ett enda API som möjliggör en skriv-en gång-upplevelse för utvecklare var som helst, samtidigt som du ger djup åtkomst till varje aspekt av varje inbyggd plattform.
.NET 6 eller senare innehåller en serie plattformsspecifika ramverk för att skapa appar: .NET för Android, .NET för iOS, .NET för Mac Catalyst och Windows UI 3-bibliotek (WinUI 3). Dessa ramverk har alla åtkomst till samma .NET Base Class Library (BCL). Det här biblioteket abstraherar informationen om den underliggande plattformen bort från din kod. BCL är beroende av .NET-ramverket för att tillhandahålla exekveringsmiljön för din kod. För Android, iOS och macOS implementeras miljön av Mono, en implementering av .NET-körningen. I Windows tillhandahåller .NET Core Common Language Runtime (CLR) körningsmiljön.
BCL gör det möjligt för appar som körs på olika plattformar att dela gemensam affärslogik, men de olika plattformarna har olika sätt att definiera användargränssnittet för en app, och de tillhandahåller olika modeller för att ange hur elementen i ett användargränssnitt kommunicerar och samverkar. Du kan skapa användargränssnittet för varje plattform separat med lämpligt plattformsspecifikt ramverk (.NET för Android, .NET för iOS, .NET för Mac Catalyst eller WinUI 3), men den här metoden kräver att du har en kodbas för varje enskild enhetsfamilj.
.NET MAUI tillhandahåller ett enda ramverk för att skapa UIs för mobil- och skrivbordsappar. Följande diagram visar en översikt över arkitekturen för en .NET MAUI-app:
I en .NET MAUI-app skriver du kod som främst interagerar med .NET MAUI-kontrollerna och API-lagret (1). Det här lagret förbrukar sedan direkt api:erna för den interna plattformen (3). Dessutom kan appkod direkt använda plattforms-API:er (2) om det behövs.
.NET MAUI-appar kan skrivas på PC eller Mac och kompileras till interna apppaket:
- Android-appar som skapats med hjälp av .NET MAUI kompileras från C# till ett mellanliggande språk (IL) som sedan just-in-time (JIT) kompileras till en intern sammansättning när appen startas.
- iOS-appar som skapats med .NET MAUI är fullständigt AOT-kompilerade från C# till ursprunglig ARM-assemblerkod.
- macOS-appar som skapats med .NET MAUI använder Mac Catalyst, en lösning från Apple som för din iOS-app som skapats med UIKit till skrivbordet och utökar den med ytterligare AppKit- och plattforms-API:er efter behov.
- Windows-appar som skapats med .NET MAUI använder Windows UI 3-bibliotek (WinUI 3) för att skapa interna appar som riktar sig mot Windows-skrivbordet. Mer information om WinUI 3 finns i Windows UI Library.
Notera
Att skapa appar för iOS och macOS kräver en Mac.
Vad .NET MAUI tillhandahåller
.NET MAUI tillhandahåller en samling kontroller som kan användas för att visa data, initiera åtgärder, ange aktivitet, visa samlingar, välja data med mera. Förutom en samling kontroller tillhandahåller .NET MAUI även:
- En utarbetad layoutmotor för att utforma sidor.
- Flera sidtyper för att skapa omfattande navigeringstyper, till exempel lådor.
- Stöd för databindning för mer eleganta och underhållsbara utvecklingsmönster.
- Möjligheten att anpassa hanterare för att förbättra hur gränssnittselement presenteras.
- Plattformsoberoende API:er för åtkomst till inbyggda enhetsfunktioner. Dessa API:er gör det möjligt för appar att komma åt enhetsfunktioner som GPS, accelerometer och batteri- och nätverkstillstånd. För mer information, se plattformsoberoende API:er för enhetsfunktioner.
- Plattformsoberoende grafikfunktioner, som ger en ritningsarbetsyta som stöder ritning och målning av former och bilder, sammansättningsåtgärder och grafiska objekttransformering.
- Ett enda projektsystem som använder flera mål för att rikta in sig på Android, iOS, macOS och Windows. Mer information finns i .NET MAUI Single project.
- .NET-snabbinläsning, så att du kan ändra både din XAML och din hanterade källkod medan appen körs, och sedan observera resultatet av dina ändringar utan att återskapa appen. Mer information finns i .NET-snabbladdning.
Plattformsoberoende API:er för enhetsfunktioner
.NET MAUI tillhandahåller plattformsoberoende API:er för inbyggda enhetsfunktioner. Exempel på funktioner som tillhandahålls av .NET MAUI för åtkomst till enhetsfunktioner är:
- Åtkomst till sensorer, till exempel accelerometer, kompass och gyroskop på enheter.
- Möjlighet att kontrollera enhetens nätverksanslutningstillstånd och identifiera ändringar.
- Ange information om den enhet som appen körs på.
- Kopiera och klistra in text i systemurklippet mellan appar.
- Välj en eller flera filer från enheten.
- Lagra data på ett säkert sätt som nyckel/värde-par.
- Använd inbyggda text-till-tal-motorer för att läsa text från enheten.
- Initiera webbläsarbaserade autentiseringsflöden som lyssnar efter ett återanrop till en specifik appregistrerad URL.
Enskilt projekt
.NET MAUI-projektet tar de plattformsspecifika utvecklingsupplevelser som du vanligtvis stöter på när du utvecklar appar och abstraherar dem till ett enda delat projekt som kan riktas mot Android, iOS, macOS och Windows.
.NET MAUI-projekt ger en förenklad och konsekvent plattformsöverskridande upplevelse för utveckling, oavsett vilka plattformar som är måltavla. Ett .NET MAUI-projekt innehåller följande funktioner:
- Ett enda delat projekt som kan riktas mot Android, iOS, macOS och Windows.
- Ett förenklat felsökningsmålsval för att köra .NET MAUI-appar.
- Delade resursfiler i det enskilda projektet.
- Ett enda appmanifest som anger appens titel, ID och version.
- Åtkomst till plattformsspecifika API:er och verktyg vid behov.
- En enda plattformsoberoende startpunkt för appen.
.NET MAUI-projekt är aktiverat med flera mål och användning av SDK-liknande projekt. Mer information om .NET MAUI single project finns i .NET MAUI single project.
Ladda om frekvent
.NET MAUI innehåller stöd för .NET-frekvent omläsning, vilket gör att du kan ändra din hanterade källkod medan appen körs, utan att behöva pausa eller träffa en brytpunkt manuellt. Sedan kan dina kodredigeringar tillämpas på din app som körs utan omkompilering.
.NET MAUI innehåller även stöd för XAML-frekvent omläsning, vilket gör att du kan spara dina XAML-filer och se ändringarna som återspeglas i din app som körs utan omkompilering. Dessutom behålls ditt navigeringstillstånd och dina data så att du snabbt kan iterera i användargränssnittet utan att förlora din plats i appen.