Chi sviluppa da una vita ricorda perfettamente il cambiamento che Microsoft introdusse ai tempi del lancio di Windows NT, nel 1993.
Windows NT è stato il primo sistema operativo dell’azienda di Redmond completamente a 32 bit: all’epoca furono presentate le nuove API Win32, un insieme di funzioni C che potevano essere richiamate dalle applicazioni a 32 bit.
Ai giorni nostri il termine generico Win32 è stato mantenuto per riferirsi alle API, utilizzabili anche sulle versioni a 64 bit di Windows (in un altro articolo abbiamo visto le differenze tra 8, 16, 32 e 64 bit a livello di processore), che consentono alle applicazioni di dialogare direttamente con il sistema operativo sottostante.
L’interfaccia di programmazione o API Win32 è offerta da alcune librerie principali ampiamente utilizzate come kernel32.dll
, user32.dll
e gdi32.dll
. Ve ne sono poi moltissime altre (COM, DirectX, IP Helper,…) che offrono funzionalità accessorie. In ogni caso le API Win32 possono essere richiamate da qualunque linguaggio di programmazione in grado di supportare il collegamento al codice C.
Nel 2002 Microsoft ha presentato WinForms ovvero un set di funzionalità per la creazione di interfacce grafiche (GUI) utilizzabile a partire da codice .NET. Il supporto per WinForms (alias Windows Form) deriva per larga parte dal file mscor*.dll
contenuto della cartella del .NET framework.
WinForms “avvolge” le precedenti API Win32 e offre tutta una serie di funzionalità aggiuntive.
Nel 2006 è stata introdotta anche Windows Presentation Foundation (WPF): in questo caso l’interfaccia dell’applicazione viene composta utilizzando dei “file descrittori” salvati nel linguaggio di markup XAML. Mentre il codice .NET è gestito a sé, il rendering degli oggetti definiti via XAML è gestito via DirectX e Direct3D permettendo una maggiore libertà d’azione e una resa più veloce rispetto alle librerie Win32 GDI (Graphics Device Interface) “vecchia scuola” che utilizzano anche le applicazioni .NET WinForms.
Con il lancio della Universal Windows Platform o UWP insieme con Windows 10 (2015-2016), Microsoft ha spostato l’attenzione su una soluzione che permettesse al programmatore di realizzare applicazioni universali in grado di essere eseguite allo stesso modo non solo sui PC Windows ma anche sugli altri dispositivi dell’azienda, compresi gli smartphone Windows 10 Mobile (progetto poi naufragato).
Con UWP si voleva semplificare il porting delle applicazioni sui vari dispositivi facilitando anche il riutilizzo di codice. Eppure l’idea delle app UWP non ha ottenuto il successo sperato tanto che già da tempo il Microsoft Store che avrebbe dovuto diventare lo strumento principe per la diffusione delle app UWP accetta la pubblicazione dei tradizionali programmi Win32.
Nonostante l’utilizzo dell’aggettivo “universale” nel nome, le app UWP possono essere eseguite solo su dispositivi Windows 10 e Windows 11. Non possono essere utilizzate quindi sulle versioni precedenti di Windows e devono soddisfare alcuni requisiti imposti dal Microsoft Store.
Con il tempo Microsoft ha deciso di accantonare le applicazioni UWP: emblematica, ad esempio, è la storia di OneNote: dopo essere stata messa da parte, è tornata a essere protagonista assoluta la versione Win32 dell’applicazione mentre Outlook per Windows 10 sarà abbandonata a ottobre 2025.
Che il vento fosse cambiato si era già visto ai tempi della presentazione di WinUI 3 (inizio 2021), un’alternativa a tutte le precedenti tecnologie per il design delle interfacce grafiche delle applicazioni Windows, WinForms e WPF comprese.
Conosciuta anche come Project Reunion, WinUI 3 disaccoppia o rimuove la dipendenza dal sistema operativo sottostante.
Con Windows App SDK ha poi voluto presentare un insieme di nuovi componenti e strumenti per gli sviluppatori che rappresentano la prossima evoluzione nella piattaforma di sviluppo di app per Windows. Il pacchetto SDK fornisce un set unificato di API e strumenti che possono essere usati in modo coerente da qualsiasi app destinata a Windows 10 e Windows 11. Windows App SDK è stato individuato da Microsoft come nuovo nuovo per Project Reunion.
Windows App SDK non vuole sostituire soluzioni preesistenti: le app Win32 e .NET continuano a restare attuali, comprese le soluzioni quali WinForms e WPF per il design delle interfacce grafiche. Anzi, Windows App SDK integra questi strumenti e tipi di app esistenti con un set comune di API sulle quali gli sviluppatori possono fare affidamento.
In un documento di supporto Microsoft spiega come modernizzare le applicazioni desktop con Windows App SDK.
Windows App SDK fornisce estensioni per Visual Studio 2019 e Visual Studio 2022: includono modelli di progetto configurati per usare i componenti di Windows App SDK nei nuovi progetti. Le librerie di Windows App SDK possono essere aggiunte all’interno di progetti preesistenti grazie a un apposito pacchetto NuGet.
Per iniziare a programmare a costo zero è possibile scaricare e installare, ad esempio, la Community Edition di Visual Studio 2022.