Ö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
Vi rekommenderar WinUI och Windows App SDK för att skapa appar som ser bra ut och drar 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 komponenter och verktyg för utvecklare 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 kan användas på ett konsekvent sätt av skrivbordsappar i Windows 11 och nednivå till Windows 10, version 1809.
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 Framework-specifika 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 omfattar 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. Detta inkluderar datorer, surfplattor, 2-i-1-datorer, Xbox, Mixed Reality-enheter osv.
Med React Native for Desktop skriver du de flesta eller alla appkoder i JavaScript – eller TypeScript – och ramverket skapar ett inbyggt UWP XAML-program. Om din app behöver anropa ett plattforms-API kan du vanligtvis göra det via någon av de många community-modulerna, eller om det inte finns någon modul ännu 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-bara bibliotek på npmjs.com, och många inhemska bibliotek också.
- Din app använder de inbyggda kontrollerna, det visuella utseendet, animeringar och färger och kommer därför att känna sig 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, eftersom ramverket gör att du kan anropa plattforms-API:er samt skriva egna vyhanterare och interna moduler.
- Stort och växande community-momentum, med många communitymoduler.
Mer information om React Native for Desktop finns i följande länkar:
- React Native-repot för Windows på GitHub
- React Native för macOS-lagringsplats på GitHub
- API-referens
- React Native för skrivbordsresurser
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 ytterligare ett säkerhetslager. Den här förbättringen kräver lite eller ingen ändring av koden tack vare den nya Win32-appisolering säkerhetsfunktionen.
Tips
Om du redan har investerat i WPF kan du fortsätta att använda den 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 Välj det bästa programramverket för ett Windows-utvecklingsprojekt träningsmodul.
Andra interna plattformsalternativ
Många appar för Windows skrivs med Win32, Windows Formseller UWP. Vart och ett av dessa ramverk stöds och kommer att fortsätta att få 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 interna Windows-program som kräver direkt åtkomst till Windows och maskinvara. Detta gör Win32 till den apptyp som valts för program som behöver den högsta prestandanivån och direkt åtkomst till systemmaskinvara.
Med Win32 API med C++ kan du uppnå högsta möjliga prestanda och effektivitet genom att ta 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 moderna Win32-skrivbordsappar med förstklassig åtkomst till WinRT-API:er (Windows Runtime).
Dessutom kan du nu integrera en sandbox-miljö i dina Win32-program, vilket ger ytterligare ett säkerhetslager. Den här förbättringen kräver lite eller ingen ändring av koden tack vare den nya Win32-appisolering säkerhetsfunktionen.
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- eller en Progressive Web App (PWA). Det finns många andra tillgängliga alternativ (här är en lista över populära alternativ), men det här är några bra utgångspunkter.
.NET MAUI utnyttjar kraften i WinUI i Windows, samtidigt som körning på andra operativsystem aktiveras. 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 som utnyttjar 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. Detta ger dina appar åtkomst till allt du får med WinUI plus möjligheten att nå till 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.
- Du vill skicka ditt program bortom Windows till andra skrivbordsmål och mobila mål med inbyggda plattformsupplevelser.
- Du vill använda C# och/eller XAML för att skapa plattformsoberoende appar.
- Du använder Blazor för webbutveckling och vill inkludera allt eller en del av det i ett mobil- eller skrivbordsprogram.
Mer information om .NET MAUI finns i följande länkar:
Funktionsjämförelse för apputvecklingsramverket
Det finns en mängd olika 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 | Blazor Hybrid | React Native för dator | UWP XAML (Windows.UI.Xaml) | Win32 (MFC eller ATL) | Windows-formulär | WinUI 3 | WPF |
---|---|---|---|---|---|---|---|---|
Språk | C# | C# | JavaScript, TypeScript | C#, C++, Visual Basic | C++, Rust | C#, Visual Basic | C#, C++ | C#, Visual Basic |
språk för användargränssnittet | XAML/Code | Rakkniv | JSX | XAML | Kod | Kod | XAML | XAML |
användargränssnittsdesigner (dra & och släpp) |
❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
felsökning av användargränssnittet | Het omladdning | Snabbladdning | snabb uppdatering | Hot Reload | - | Het omladdning | Het omladdning | Snabbladdning |
Fluent Design | ✅ | ✅ | ✅ | ✅ (via WinUI 2) | ❌ | ❌ | ✅ | ❌ |
.NET | .NÄT | .NÄT | Ej tillämpligt | .NET Core & .NET Native | Ej tillämpligt | .NET & .NET Framework | .NÄT | .NET & .NET Framework |
Windows App SDK | ✅ (mer info) | ✅ via MAUI | ✅ (mer information) | ❌ | ✅ | ✅ (mer information) | ✅ | ✅ (mer information) |
Perfekt för beröring | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
plattformsoberoende | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Xbox/HoloLens-appar | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Sandboxing (AppContainer) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
stöds för närvarande | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Tar emot uppdateringar | ✅ | ✅ | ✅ | ✅ (felkorrigering för säkerhet &) | ✅ | ✅ | ✅ | ✅ |
Färdplan | GitHub | GitHub | GitHub | n/a | n/a | GitHub | GitHub | GitHub |
Läs mer om vart och ett av följande alternativ:
- Vanliga frågor och svar från Windows-utvecklare
- .NET Multi-platform App UI (.NET MAUI)
- ASP.NET Core Blazor Hybrid
- React Native för Skrivbord
- UWP(Universal Windows Platform)
- Rekommendation för val mellan ATL och MFC
- Windows Forms
- Windows Presentation Foundation (WPF, en presentationsteknik från Microsoft)
- WinUI i Windows App SDK:n (WinUI 3)
Nästa steg
-
Använda WinUI för att börja utveckla appar för Windows
WinUI är vår rekommenderade plattform för Windows-appar, och de här stegen kommer snabbt igång.
-
Konfigurera utvecklingsmiljön i Windows
Windows är inte bara bra för att utveckla appar som körs i Windows, det är också en kraftfull miljö för att utveckla appar för alla plattformar. Läs mer om de verktyg och alternativ som är tillgängliga för att maximera din utveckling.
Windows developer