Panoramica delle opzioni di framework
Questo articolo contiene le informazioni necessarie per iniziare a creare app per Windows.
Windows offre un'ampia gamma di linguaggi, framework e strumenti per la creazione di app, tra cui WinUI, React Native for Desktop, WPF, C++, C#, .NET e un'ampia gamma di framework multipiattaforma. Qui vengono fornite informazioni utili per decidere l'opzione migliore.
WinUI
È consigliabile usare WinUI e Windows App SDK per creare app con un aspetto accattivante che sfruttano le versioni più recenti di Windows. Se non si ha familiarità con lo sviluppo di Windows o se si inizia a lavorare su una nuova app di Windows, WinUI offre le risorse necessarie per creare ottime app per Windows 11.
WinUI è un livello di interfaccia utente basato sul linguaggio markup XAML che contiene controlli e stili moderni per la creazione di app di Windows. Come livello di interfaccia utente nativo per Windows App SDK, incorpora Fluent Design, offrendo a ogni app di Windows l'aspetto accattivante che i clienti si aspettano.
Nota
Windows App SDK è un set di nuovi componenti e strumenti per sviluppatori che rappresenta l'evoluzione più recente della piattaforma per lo sviluppo di app di Windows. Windows App SDK offre un set unificato di API e strumenti che possono essere usati in modo coerente dalle app desktop in Windows 11 fino a Windows 10, versione 1809.
Mentre WinUI è il livello di interfaccia utente nativo, è possibile usare Windows App SDK con le app WPF, WinForms o Win32. Se sono già state sviluppate app per Windows in precedenza, ma si sta cercando di iniziare a usare Windows App SDK in un'app esistente, vedere le Guide specifiche per framework.
React Native for Desktop
React Native è una piattaforma di sviluppo che consente di creare app multipiattaforma. React Native for Desktop include React Native per Windows e macOS, portando il supporto React Native in Windows SDK. React Native for Desktop consente di usare JavaScript per creare app windows native per tutti i dispositivi supportati da Windows 10 e Windows 11. Sono inclusi PC, tablet, 2 in-1, Xbox, dispositivi di realtà mista e così via.
Con React Native for Desktop, scrivi la maggior parte o tutto il codice dell'app in JavaScript - o TypeScript - e il framework produce un'applicazione XAML UWP nativa. Se l'app deve chiamare un'API della piattaforma, in genere è possibile farlo tramite uno dei numerosi moduli della community o se un modulo non esiste ancora, è possibile scrivere facilmente un modulo nativo per esporlo.
Ecco alcuni motivi per scegliere React Native for Desktop:
- Si vuole condividere il più possibile il codice tra le varie piattaforme oppure si dispone di proprietà Web con cui si vuole condividere il codice.
- Miglioramento della produttività degli sviluppatori e del ciclo interno grazie all'aggiornamento rapido.
- I concetti fondamentali dell'app (prestazioni, accessibilità, internazionalizzazione) sono pari a quelle di un'app UWP nativa.
- Si ha esperienza con e una preferenza per JavaScript o TypeScript
- È consigliabile sfruttare le librerie solo JavaScript in npmjs.com e molte librerie native.
- L'app userà i controlli nativi, l'aspetto visivo, le animazioni e i colori e quindi si sentirà integrata nel linguaggio di progettazione usato in Windows. Inoltre, le app React Native per desktop non devono compromettere il set di API che possono chiamare, perché il framework consente di chiamare le API della piattaforma, nonché scrivere i propri gestori di visualizzazioni e moduli nativi.
- Grande e crescente slancio della community, con un sacco di moduli della community.
Per altre informazioni su React Native for Desktop, vedere i collegamenti seguenti:
- Repository React Native per Windows in GitHub
- Repository React Native per macOS in GitHub
- Informazioni di riferimento sulle API
- Risorse react native per desktop
WPF
WPF è un framework ben consolidato per le applicazioni desktop di Windows con accesso a .NET o a .NET Framework. Come WinUI, anch'esso usa il markup XAML per separare l'interfaccia utente dal codice. WPF offre un set completo di funzionalità per lo sviluppo di applicazioni che includono controlli, data binding, layout, grafica 2D e 3D, animazioni, stili, modelli, documenti, supporti, testo e tipografia. WPF fa parte di .NET e, pertanto, è possibile compilare applicazioni che incorporano altri elementi dell'API .NET.
Inoltre, ora è possibile integrare nelle applicazioni WPF in pacchetto un ambiente sandbox che offre un ulteriore livello di sicurezza. Questo miglioramento richiede modifiche minime o nulle al codice grazie alla nuova funzionalità di sicurezza Isolamento dell'app Win32.
Suggerimento
Se si è già investito in WPF, è possibile continuare a usarlo e sfruttare le opzioni di modernizzazione in .NET 9. È possibile creare le app sapendo che Microsoft sta continuando a investire in WPF. Vedere le domande frequenti sullo sviluppatore di Windows per ulteriori informazioni.
Se si dispone di un'app WPF .NET, si può anche accedere alle funzionalità e alle API moderne della piattaforma Windows fornite da Windows App SDK. Per altre informazioni, vedere Usare Windows App SDK in un'app WPF e Modernizzare le app desktop.
Suggerimento
Per altre informazioni utili a decidere quale framework è l'opzione migliore per l'app su cui si sta lavorando, vedere il modulo di addestramento Scegliere il miglior framework dell'applicazione per un progetto di sviluppo Windows.
Altre opzioni native della piattaforma
Molte app per Windows vengono scritte con Win32, Windows Forms o UWP. Ognuno di questi framework è supportato e continuerà a ricevere correzioni di bug, affidabilità e sicurezza, ma livelli di investimento diversi per nuove funzionalità e stili. Per altre informazioni su questi tipi di app, vedere le schede seguenti.
Le app desktop Win32 (dette anche app desktop classiche) sono il tipo di app originale per le applicazioni Windows native che richiedono l'accesso diretto a Windows e all'hardware. Perciò, il tipo di app Win32 è la scelta ideale per le applicazioni che richiedono il massimo livello di prestazioni e l'accesso diretto all'hardware di sistema.
L'uso dell'API Win32 con C++ consente di ottenere i massimi livelli di prestazioni ed efficienza grazie a un maggiore controllo della piattaforma di destinazione con codice non gestito rispetto a quanto possibile in un ambiente di runtime gestito come WinRT e .NET. Tuttavia, per esercitare un tale livello di controllo sull'esecuzione dell'applicazione occorre una maggiore attenzione per ottenere il giusto risultato, oltre a sacrificare la produttività dello sviluppo per le prestazioni di runtime.
Ecco cosa offre l'API Win32 con C++ per consentirti di creare applicazioni a prestazioni elevate.
- Ottimizzazioni a livello di hardware, tra cui controllo rigoroso dell'allocazione delle risorse, durata degli oggetti, layout dei dati, allineamento, compressione dei byte e altro.
- Accesso a set di istruzioni orientate alle prestazioni come SSE e AVX tramite funzioni intrinseche.
- Efficiente programmazione generica indipendente dai tipi tramite l'uso di modelli.
- Contenitori e algoritmi efficienti e sicuri.
- DirectX, in particolare Direct3D e DirectCompute.
- Usa C++/WinRT per creare app Win32 desktop moderne con accesso di prima classe alle API Windows Runtime (WinRT).
Inoltre, ora è possibile integrare nelle applicazioni Win32 un ambiente sandbox che offre un ulteriore livello di sicurezza. Questo miglioramento richiede modifiche minime o nulle al codice grazie alla nuova funzionalità di sicurezza Isolamento dell'app Win32.
È anche possibile accedere alle funzionalità e alle API moderne della piattaforma Windows fornite da Windows App SDK. Per altre informazioni, vedere Usare Windows App SDK in un progetto esistente e Modernizzare le app desktop.
Altre opzioni multipiattaforma
Se è necessario che l'app sia multipiattaforma, oltre a React Native for Desktop, è consigliabile prendere in considerazione .NET MAUI o un'app Web progressiva (PWA). Sono disponibili molte altre opzioni (ecco un elenco di opzioni popolari), ma queste sono degli ottimi punti di partenza.
.NET MAUI sfrutta la potenza di WinUI in Windows, abilitando anche l'esecuzione in altri sistemi operativi. Un'altra opzione multipiattaforma, Progressive Web Apps (PWA), sono siti Web che funzionano come le app native installate in Windows e altre piattaforme supportate, funzionando come i normali siti Web nei browser.
Per ulteriori informazioni, vedere le schede seguenti.
.NET Multipiattaforma App UI (MAUI) è un framework open source multipiattaforma per la creazione di applicazioni Android, iOS, macOS e Windows che sfruttano l'interfaccia utente e i servizi nativi di ogni piattaforma da un singolo codebase .NET. Poiché favorisce le esperienze native della piattaforma, .NET MAUI usa WinUI e Windows App SDK in modo che le app ottengano l'esperienza utente più recente in Windows. In questo modo le app possono accedere a tutto ciò che si ottiene con WinUI e hanno la possibilità di raggiungere altre piattaforme.
.NET MAUI per Windows è un'ottima scelta se:
- Si vuole condividere il maggior numero possibile di codice .NET tra applicazioni per dispositivi mobili e desktop.
- Si vuole distribuire l'applicazione oltre Windows ad altre destinazioni desktop e per dispositivi mobili con esperienze della piattaforma nativa.
- Si vuole usare C# e/o XAML per la compilazione di app multipiattaforma.
- Si usa Blazor per lo sviluppo Web e se ne desidera includere la totalità o una parte in un'applicazione per dispositivi mobili o desktop.
Per altre informazioni su .NET MAUI, vedere i collegamenti seguenti:
Confronto tra le funzionalità dei framework di sviluppo di app
È disponibile un'ampia gamma di opzioni per lo sviluppo di applicazioni per Windows. L'opzione migliore dipende dai requisiti dell'applicazione, dal codice esistente e dalla familiarità con la tecnologia. La tabella seguente elenca i framework di sviluppo di app più diffusi disponibili in Windows e le funzionalità supportate da ogni framework.
Funzionalità | .NET MAUI | Blazor Hybrid | React Native for Desktop | XAML UWP (Windows.UI.Xaml) | Win32 (MFC o ATL) | WinForms | WinUI 3 | WPF |
---|---|---|---|---|---|---|---|---|
Lingua | C# | C# | JavaScript, TypeScript | C#, C++, Visual Basic | C++, Rust | C#, Visual Basic | C#, C++ | C#, Visual Basic |
Lingua dell'interfaccia utente | XAML/Codice | Razor | JSX | XAML | Codice | Codice | XAML | XAML |
Finestra di progettazione interfaccia utente (trascinare & rilasciare) |
❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
Debug interfaccia utente | Ricaricamento rapido | Ricaricamento rapido | Aggiornamento rapido | Ricaricamento rapido | - | Ricaricamento rapido | Ricaricamento rapido | Ricaricamento rapido |
Fluent Design | ✅ | ✅ | ✅ | ✅ (via WinUI 2) | ❌ | ❌ | ✅ | ❌ |
.NET | .NET | .NET | N/D | .NET Core & .NET Native | N/D | .NET & .NET Framework | .NET | .NET & .NET Framework |
Windows App SDK | ✅ (altre informazioni) | ✅ tramite MAUI | ✅ (altre informazioni) | ❌ | ✅ | ✅ (altre informazioni) | ✅ | ✅ (altre informazioni) |
Ottimo per il tocco | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
Multipiattaforma | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
App Xbox/HoloLens | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Sandboxing (AppContainer) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Attualmente supportato | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Aggiornamenti di destinazione | ✅ | ✅ | ✅ | ✅ (sicurezza & bug fix) | ✅ | ✅ | ✅ | ✅ |
Roadmap | GitHub | GitHub | GitHub | n/d | n/d | GitHub | GitHub | GitHub |
Altre informazioni su ogni opzione:
- domande frequenti sugli sviluppatori Windows
- .NET Multi-platform App UI (.NET MAUI)
- ASP.NET Core Blazor Hybrid
- React Native for Desktop
- Piattaforma UWP (Universal Windows Platform)
- Suggerimenti per la scelta tra ATL e MFC
- WinForms
- WPF (Windows Presentation Foundation)
- WinUI in Windows App SDK (WinUI 3)
Passaggi successivi
-
Usare WinUI per iniziare a sviluppare app per Windows
WinUI è la piattaforma consigliata per le app di Windows; questa procedura consente di iniziare rapidamente a crearle.
-
Configurare l'ambiente di sviluppo in Windows
Windows non è ideale solo per lo sviluppo di app che vengono eseguite su Windows, ma è anche un ambiente potente per lo sviluppo di app destinate a qualsiasi piattaforma. Altre informazioni sugli strumenti e sulle opzioni disponibili per ottimizzare lo sviluppo.