Sviluppo di applicazioni .NET a prova di futuro con la piattaforma Uno

Se passi del tempo ad ascoltare e parlare con gli sviluppatori Windows, saprai che c'è molta confusione e frustrazione sulla direzione della piattaforma, specialmente intorno a .NET e UWP (Universal Windows Platform). Microsoft sta tentando di tracciare una linea sotto le differenze tra UWP e Windows SDK precedenti, mentre cerca di portare tutti in un futuro .NET 5 con l'annuncio Build 2020 di Project Reunion, ma ci vorrà ancora del tempo per fornire una piattaforma unificata.

Molto di ciò è dovuto al modo in cui gli aggiornamenti della piattaforma Windows sono stati forniti in passato: accoppiati alle versioni del sistema operativo. Project Reunion si basa sul lavoro con i componenti dell'interfaccia utente WinUI, disaccoppiandoli dai sistemi operativi sottostanti e consentendo alla piattaforma di sviluppo di evolversi molto più velocemente di prima.

Costruire su un approccio open source alla piattaforma offre maggiori opportunità per portare il modello di sviluppo .NET (e il tuo codice) su quante più piattaforme possibile. Un esempio di come funzionerà è l'implementazione WinUI della piattaforma Uno, che ha recentemente lanciato la sua terza major release.

Presentazione della piattaforma Uno 3.0

Se non hai mai visto la piattaforma Uno, è forse più facile pensarla come un'alternativa a Xamarin che ti consente di creare codice .NET che gira su iOS, Android, macOS e il Web. Ho già scritto su Uno come un modo per fornire interfacce utente familiari sul Web utilizzando WinUI con WebAssembly e il framework di sviluppo Blazor di Microsoft.

Uno Platform 3.0 è stato sviluppato per supportare WinUI 3.0 insieme a WinUI 2.0. In questo modo puoi combinare e abbinare controlli nuovi e attuali, un approccio che dovrebbe funzionare bene insieme all'implementazione graduale di WinUI 3.0 e delle API di Project Reunion a livello di sistema.

C'è molto da apprezzare in Uno, soprattutto perché c'è poca o nessuna curva di apprendimento. Il codice può essere creato nel tuo IDE preferito e utilizzare strumenti e framework esistenti, fornendo un livello di interfaccia utente comune per tutte le versioni del codice. È sufficiente scrivere il codice C # e XAML una volta, con il codice WinUI in esecuzione direttamente su Windows e tramite Uno su altre piattaforme, basandosi sugli strumenti nativi di Xamarin per iOS, macOS e Android e utilizzando l'implementazione Mono-WASM sul Ragnatela.

Utilizzo di Uno per portare le app .NET su macOS

Sotto il cofano, l'implementazione macOS di Uno si basa sulle somiglianze tra AppKit di macOS e UIKit di iOS. Ciò consente al team di sviluppo di pubblicare le proprie implementazioni di controllo iOS esistenti. Sebbene funzioni, alcuni controlli presentano ancora problemi, quindi vale la pena sperimentare prima di distribuire qualsiasi codice agli utenti. Anche così, è un modo efficace per portare le app .NET esistenti da Windows a macOS. Basandosi sulle librerie macOS principali, Uno dovrebbe, si spera, consentire al tuo codice di funzionare sul silicio Apple basato su ARM recentemente annunciato.

Il supporto per Mac in Uno è relativamente nuovo, verrà lanciato a maggio 2020, con una reimplementazione dell'app Calcolatrice di Windows su macOS e pubblicata tramite lo store macOS di Apple. La creazione di una versione macOS del codice esistente richiede l'utilizzo di un set di nuovi modelli Uno e lo strumento da riga di comando di Windows .NET. Dopo aver installato i nuovi modelli per Uno 2.3 o 3.0, puoi creare uno scaffolding dell'app per un'applicazione macOS con lo stesso nome del progetto che desideri scegliere come target.

È quindi possibile spostare il progetto nella stessa cartella del resto dei file dell'applicazione e aggiungere il nuovo progetto a una soluzione di Visual Studio esistente. Compila il tuo codice per macOS, usando Visual Studio per Mac e configura le impostazioni del simulatore iPhone per indirizzare il tuo dispositivo macOS di sviluppo.

Poiché non è possibile utilizzare Visual Studio per Mac per lavorare su app Windows WinUI, è una buona idea usare Git o una piattaforma di controllo del codice sorgente simile per la soluzione completa in modo da poter gestire le modifiche al codice per macOS e per Windows. Se stai lavorando su una versione WebAssembly della tua app, usa Visual Studio Code per crearla con le estensioni del debugger C # e JavaScript. Il supporto per MacOS è disponibile sia in Uno 2.4 che in 3.0, con l'ultima versione che dimostra un'applicazione di riproduzione video multipiattaforma basata su WinUI disponibile in tutti i principali app store.

Utilizzando WinUI 3.0 in Uno

Se hai intenzione di lavorare con WinUI 3.0, devi usare la recente versione 3.0 di Uno. Ancora una volta, usa i modelli .NET della piattaforma Uno per impostare lo scaffolding per il tuo codice. Se stai spostando il codice esistente in WinUI 3.0, devi modificare lo spazio dei nomi che stai utilizzando, sia per i controlli Microsoft che per il codice Uno, cosa abbastanza facile da fare utilizzando gli strumenti di refactoring incorporati in Visual Studio.

Un aspetto interessante della piattaforma Uno è il supporto per i dispositivi a doppio schermo. Portando il codice esistente su Uno e aggiungendo i suoi controlli a doppio schermo, dovresti essere in grado di trasferire le app da Windows al prossimo Surface Duo basato su Android con modifiche minime. Con Microsoft che dà la priorità alle applicazioni mobili a doppio schermo e collabora con Google per migliorare il supporto alle prossime versioni di Android, strumenti come Uno rappresenteranno un percorso importante per portare le esperienze esistenti su grandi schermi e tablet da Windows e portarle su hardware Android pieghevole e doppio schermo .

Uno Platform e il futuro dello sviluppo di applicazioni .NET

È chiaro che Microsoft mira a rimuovere la confusione su come creare applicazioni nell'ecosistema .NET, utilizzando WinUI e Project Reunion per fornire la necessaria chiarezza sul futuro. Ma non appena Microsoft promette che verranno consegnati, è probabile che siano ancora troppo lenti per molti sviluppatori. Sia la piattaforma Uno che la MAUI di Xamarin sono modi per accedere a queste tecnologie più rapidamente, oltre al codice .NET esistente.

Aggiungendo macOS e il supporto dell'interfaccia utente Web a .NET, la piattaforma Uno sembra essere una scelta migliore per indirizzare il maggior numero possibile di utenti con la minima quantità di modifiche al codice; è una strada verso il futuro .NET che dovrebbe far risparmiare molto tempo di sviluppo e mantenere il carico di supporto al minimo.

L'uso di Uno dovrebbe rendere a prova di futuro il codice .NET esistente anche in altri modi. Le applicazioni WebAssembly nel browser e WASI (WebAssembly System Interface) autonome dovrebbero semplificare il processo di portare il codice a una nuova generazione di hardware edge, in particolare dispositivi con fattore di forma ridotto e schermo piccolo basati su ARM e altri processori a basso consumo.