Condividi tramite


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, WPF, C++, C#, .NET, nonché una serie 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.

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.

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).

È 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.

Opzioni multipiattaforma

Se è necessario che l'app sia multipiattaforma, prendere in considerazione .NET MAUI, un'app Web progressiva (PWA) o React Native per Windows. 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. React Native per Windows consente di scrivere app che vengono eseguite in tutti i dispositivi supportati da Windows 10 e Windows 11 (non solo PC). 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 (RNW) 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:

Passaggi successivi