Översikt över ramverksalternativ

Den här artikeln innehåller den information du behöver för att komma igång med att skapa appar för Windows.

Windows erbjuder ett brett utbud av språk, ramverk och verktyg för att skapa appar, inklusive WinUI, React Native for Desktop, WPF, C++, C#, .NET och en mängd olika plattformsoberoende ramverk. Här tillhandahåller vi information som hjälper dig att avgöra vilket alternativ som är bäst för dig.

WinUI (på engelska)

WinUI-logotyp.

Använd WinUI och Windows App SDK för att skapa appar som ser bra ut och dra nytta av de senaste Windows-versionerna. Om du är nybörjare på Windows-utveckling eller börjar arbeta med en ny Windows-app tillhandahåller WinUI de resurser du behöver för att skapa bra appar för Windows 11.

WinUI är ett XAML-markeringsbaserat användargränssnittslager som innehåller moderna kontroller och format för att skapa Windows-appar. Som det interna användargränssnittsskiktet för Windows App SDK förkroppsligar det Fluent Design, vilket ger varje Windows-app den polerade känsla som kunderna förväntar sig.

Not

Windows App SDK är en uppsättning nya utvecklarkomponenter och verktyg som representerar den senaste utvecklingen i Utvecklingsplattformen för Windows-appar. Windows App SDK innehåller en enhetlig uppsättning API:er och verktyg som skrivbordsappar på Windows 11 och nednivå till Windows 10, version 1809, kan använda på ett konsekvent sätt.

WinUI är det interna UI-lagret, men du kan använda Windows App SDK med WPF-, WinForms- eller Win32-appar. Om du har utvecklat appar för Windows tidigare, men vill komma igång med Windows App SDK i en befintlig app, kan du läsa Ramverksspecifika guider.

React Native för skrivbord

React Native är en utvecklingsplattform som gör det möjligt att skapa plattformsoberoende appar. React Native for Desktop innehåller React Native för Windows och macOS, vilket ger React Native-stöd till Windows SDK. Med React Native for Desktop kan du använda JavaScript för att skapa interna Windows-appar för alla enheter som stöds av Windows 10 och Windows 11. Det här stödet omfattar datorer, surfplattor, 2-i-1-enheter, Xbox- och Mixed Reality-enheter med mera.

Med React Native for Desktop skriver du de flesta eller alla appkoder i JavaScript eller TypeScript. Ramverket skapar ett internt UWP XAML-program. Om din app behöver anropa ett plattforms-API kan du vanligtvis göra det via en av de många community-modulerna. Om det inte finns någon modul än kan du enkelt skriva en inbyggd modul för att exponera den.

Här följer några anledningar till att välja React Native for Desktop:

  • Du vill dela kod mellan plattformar så mycket som möjligt, eller så har du webbegenskaper som du vill dela kod med.
  • Förbättrad utvecklarproduktivitet och inre loop tack vare snabb uppdatering.
  • Appens grunder (prestanda, tillgänglighet, internationalisering) är lika bra som en intern UWP-app.
  • Du har erfarenhet av och en inställning för JavaScript eller TypeScript.
  • Du vill använda JavaScript-bibliotek på npmjs.com och många inhemska bibliotek också.
  • Appen använder inbyggda kontroller, visuellt utseende, animeringar och färger, så att den känns integrerad i det designspråk som används i Windows. Dessutom behöver React Native for Desktop-appar inte kompromissa med den uppsättning API:er som de kan anropa. Med ramverket kan du anropa plattforms-API:er samt skriva egna vyhanterare och interna moduler.
  • Stort och växande communitymomentum, med många gemenskapsmoduler.

Mer information om React Native for Desktop finns i följande länkar:

WPF (Windows Presentation Foundation)

WPF är ett väletablerat ramverk för Windows-skrivbordsprogram med åtkomst till .NET eller .NET Framework. Precis som WinUI använder det även XAML-markering för att separera användargränssnittet från kod. WPF tillhandahåller en omfattande uppsättning funktioner för programutveckling som omfattar kontroller, databindning, layout, 2D- och 3D-grafik, animering, formatmallar, mallar, dokument, media, text och typografi. WPF är en del av .NET, så du kan skapa program som innehåller andra element i .NET-API:et.

Dessutom kan du nu integrera en sandbox-miljö i dina paketerade WPF-program, vilket ger ett extra säkerhetslager. Den här förbättringen kräver lite eller ingen ändring av koden tack vare den nya säkerhetsfunktionen Win32-appisolering .

Tips

Om du redan har investerat i WPF kan du fortsätta att använda det och dra nytta av moderniseringsalternativen i .NET 9. Du kan skapa dina appar med vetskapen om att Microsoft fortsätter att investera i WPF. Mer information finns i Vanliga frågor och svar om Windows-utvecklare .

Om du har en WPF .NET-app har du också åtkomst till moderna Windows-plattformsfunktioner och API:er som tillhandahålls av Windows App SDK. Mer information finns i Använda Windows App SDK i en WPF-app och Modernisera dina skrivbordsappar.

Tips

Om du behöver mer hjälp med att bestämma vilket ramverk som är det bästa valet för din app kan du läsa utbildningsmodulen Välj det bästa programramverket för ett Windows-utvecklingsprojekt .

Andra interna plattformsalternativ

Många appar för Windows skrivs med Win32, Windows Forms eller UWP. Vart och ett av dessa ramverk stöds och fortsätter att ta emot bugg-, tillförlitlighets- och säkerhetskorrigeringar, men varierande investeringsnivåer för nya funktioner och format. Mer information om dessa apptyper finns på följande flikar.

Win32-skrivbordsappar (kallas även ibland klassiska skrivbordsappar) är den ursprungliga apptypen för inbyggda Windows-program som kräver direkt åtkomst till Windows och maskinvara. Den här åtkomsten gör Win32 till den apptyp som väljs för program som behöver högsta prestandanivå och direkt åtkomst till systemmaskinvara.

Genom att använda Win32-API:et med C++, kan du uppnå högsta möjliga prestanda och effektivitet. Du tar mer kontroll över målplattformen med ohanterad kod än vad som är möjligt i en hanterad körningsmiljö som WinRT och .NET. Men att ha en sådan kontroll över din applikations körning kräver större omsorg och uppmärksamhet för att få det rätt och innebär att man offrar utvecklingsproduktiviteten för att förbättra körningens prestanda.

Här följer några höjdpunkter i vad Win32 API och C++ erbjuder för att du ska kunna skapa högpresterande program.

  • Optimeringar på maskinvarunivå, inklusive noggrann kontroll över resursallokering, objektlivslängder, datalayout, justering, bytepackning med mera.
  • Åtkomst till prestandaorienterade instruktionsuppsättningar som SSE och AVX via inbyggda funktioner.
  • Effektiv, typsäker allmän programmering med hjälp av mallar.
  • Effektiva och säkra containrar och algoritmer.
  • DirectX, särskilt Direct3D och DirectCompute.
  • Använd C++/WinRT för att skapa win32-appar för det moderna skrivbordet med förstklassig åtkomst till Windows Runtime-API:er (WinRT).

Dessutom kan du nu integrera en sandbox-miljö i dina Win32-program, vilket ger ett extra säkerhetslager. Den här förbättringen kräver lite eller ingen ändring av koden tack vare den nya säkerhetsfunktionen Win32-appisolering .

Du har också åtkomst till moderna Windows-plattformsfunktioner och API:er som tillhandahålls av Windows App SDK. Mer information finns i Använda Windows App SDK i ett befintligt projekt och Modernisera dina skrivbordsappar.

Andra plattformsoberoende alternativ

Om du vill att din app ska vara plattformsoberoende bör du, förutom React Native for Desktop, överväga .NET MAUI, Blazor Hybrid eller en progressiv webbapp (PWA). Många andra alternativ är tillgängliga (här är en lista över populära alternativ), men dessa alternativ är bra utgångspunkter.

.NET MAUI utnyttjar kraften i WinUI i Windows, samtidigt som körning på andra operativsystem aktiveras. Blazor Hybrid blandar skrivbords- och mobilbaserade klientramverk med .NET och Blazor. Ett annat plattformsoberoende alternativ, Progressive Web Apps (PWA) är webbplatser som fungerar som installerade, inbyggda appar på Windows och andra plattformar som stöds, samtidigt som de fungerar som vanliga webbplatser i webbläsare.

Mer information finns i följande flikar.

.NET Multi-Platform App UI (MAUI) är ett plattformsoberoende ramverk med öppen källkod för att skapa Android-, iOS-, macOS- och Windows-program. Med .NET MAUI kan du använda det interna användargränssnittet och tjänsterna för varje plattform från en enda .NET-kodbas. Eftersom .NET MAUI föredrar plattformsbaserade upplevelser använder det WinUI och Windows App SDK så att appar får den senaste användarupplevelsen i Windows. Den här metoden ger dina appar åtkomst till allt du får med WinUI plus möjligheten att nå andra plattformar.

.NET MAUI för Windows är ett bra val om du:

  • Vill dela så mycket .NET-kod som möjligt i mobil- och skrivbordsprogram.
  • Vill skicka ditt program bortom Windows till andra skrivbordsmål och mobila mål med inbyggda plattformsupplevelser.
  • Vill du använda C# och/eller XAML för att skapa plattformsoberoende appar.
  • Använder Blazor för webbutveckling och vill inkludera allt eller en del av det i ett mobilt eller skrivbordsprogram.

Mer information om .NET MAUI finns i följande länkar:

Funktionsjämförelse för apputvecklingsramverket

Du har många alternativ för att utveckla program för Windows. Det bästa alternativet för dig beror på dina programkrav, din befintliga kod och din kunskap om tekniken. I följande tabell visas de mest populära apputvecklingsramverken som är tillgängliga i Windows och de funktioner som stöds av varje ramverk.

Funktion .NET MAUI (en plattform för att bygga applikationer) Blazor Hybrid React Native för skrivbord UWP XAML (Windows.UI.Xaml) Win32 (MFC eller ATL) Windows-formulär WinUI 3 WPF (Windows Presentation Foundation)
Språk C# C# JavaScript, TypeScript C#, C++, Visual Basic C++, Rost C#, Visual Basic C#, C++ C#, Visual Basic
Språk för användargränssnitt XAML/Kod Rakkniv JSX (JSX) XAML Kod Kod XAML XAML
Användargränssnittsdesigner
(dra & och släpp)
Stöds inte Stöds inte Stöds inte Stödd Stöds inte Stödd Stöds inte Stödd
Felsökning av användargränssnitt Snabb inläsning Snabb inläsning Snabb uppdatering Snabb inläsning - Snabb inläsning Snabb inläsning Snabb inläsning
Flytande design Stödd Stödd Stödd Stöds (via WinUI 2) Stöds inte Stöds inte Stödd Stöds inte
.NÄT .NÄT .NÄT Ej tillämpligt .NET Core och .NET Native Ej tillämpligt .NET och .NET Framework .NÄT .NET och .NET Framework
SDK för Windows-appar Stödd (mer info) Stödsvia MAUI Stödd (mer info) Stöds inte Stödd Stödd (mer info) Stödd Stödd (mer info)
Perfekt för beröring Stödd Stödd Stödd Stödd Stöds inte Stöds inte Stödd Stöds inte
Plattformsoberoende Stödd Stödd Stödd Stöds inte Stöds inte Stöds inte Stöds inte Stöds inte
Xbox/HoloLens-appar Stöds inte Stöds inte Stödd Stödd Stöds inte Stöds inte Stöds inte Stöds inte
Sandboxning (AppContainer) Stöds inte Stöds inte Stödd Stödd Stöds inte Stöds inte Stöds inte Stöds inte
Stöds för närvarande Stödd Stödd Stödd Stödd Stödd Stödd Stödd Stödd
Ta emot uppdateringar Stödd Stödd Stödd stöds (säkerhets- och buggfixar) Stödd Stödd Stödd Stödd
Översikt GitHub GitHub GitHub Inte tillämpligt Inte tillämpligt GitHub GitHub GitHub

Läs mer om vart och ett av följande alternativ:

Nästa steg