Comprendere Microsoft .NET 5

Uno dei temi chiave della strategia di sviluppo 2020 di Microsoft è forse meglio pensato come il passaggio tra generazioni. È un passaggio di consegne relativamente fluido, inquadrato come un'unificazione di vecchi e nuovi modi di lavorare. Ma alla fine, che si tratti di Project Reunion, WinUI 3 o del lancio di .NET 5, la nuova tecnologia va avanti, lasciandosi alle spalle il vecchio.

Non è una brutta cosa. Sviluppiamo nuovi modi di fare le cose per molte ragioni, ma spesso si fondono attorno a un punto chiave: il nuovo modo è migliore. Risolve problemi che i vecchi strumenti non potevano e risponde a nuove domande che non erano state poste quando veniva definita la soluzione originale.

Un nuovo .NET per un nuovo mondo

Tutte queste ragioni si uniscono nella transizione da .NET Framework a .NET 5. Vent'anni fa, quando veniva definito il .NET Framework originale, abbiamo creato applicazioni client-server monolitiche in ambienti IT strettamente definiti. Ora stiamo creando un mix di microservizi distribuiti leggeri e app mobili multipiattaforma, utilizzando infrastrutture in rapida evoluzione. È, nonostante il cliché, un mondo completamente nuovo.

.NET Core è stato progettato per questo modo di lavorare; multipiattaforma dall'inizio della sua vita e destinato a supportare nuove applicazioni mobili cloud-first, nonché modelli e pratiche di sviluppo .NET tradizionali. Ha acquisito sempre più API attraverso tre versioni principali e quando le librerie .NET Standard hanno iniziato a offrire un obiettivo comune per il codice che ha semplificato la condivisione di progetti tra di esso, .NET Framework e Xamarin.

.NET 5: un percorso per lo sviluppo futuro

Tecnicamente questa nuova versione dovrebbe essere .NET Core 4, ma Microsoft sta saltando un numero di versione per evitare confusione con la versione corrente di .NET Framework. Allo stesso tempo, il passaggio a un numero di versione superiore e l'eliminazione di Core dal nome indica che questo è il passaggio successivo per tutto lo sviluppo .NET. Due progetti mantengono ancora il nome Core: ASP.NET Core 5.0 ed Entity Framework Core 5, poiché esistono ancora progetti legacy con gli stessi numeri di versione.

È un traguardo importante, che segna il punto in cui è necessario considerare l'avvio di tutti i nuovi progetti in .NET 5 e lo spostamento di qualsiasi codice esistente da .NET Framework. Sebbene Microsoft non rimuova il supporto da .NET Framework, è in modalità di manutenzione e non riceverà nuove funzionalità nelle versioni future. Tutte le nuove API e lo sviluppo della community saranno in .NET 5 (e nel 2021 con supporto a lungo termine .NET 6).

Alcune tecnologie familiari come Web Form e Windows Communication Foundation sono state deprecate in .NET 5. Se le stai ancora utilizzando, è meglio rimanere su .NET Framework 4 per ora e pianificare una migrazione a tecnologie supportate più recenti, come come Razor Pages o gRPC di ASP.NET. Esistono piani per il supporto della comunità per framework alternativi che offriranno API simili, ma lavorare con approcci più recenti aiuterà il codice a prova di futuro e renderà più facile lavorare su più piattaforme.

Un aspetto leggermente confuso di .NET 5 è il modo in cui funziona con le librerie .NET Standard. Non scompariranno, anche se il codice .NET 5 non ha bisogno di fare riferimento a loro direttamente in quanto ora sono un sottoinsieme del moniker framework di destinazione .NET 5 (TFM). Questo nuovo TFM sostituisce il vecchio netcoreapp e netstandard TFM, anche se se stai scrivendo codice che deve essere condiviso tra framework, puoi comunque utilizzare .NET Standard 2.0 TFM per scopi di compatibilità. Nella maggior parte dei casi, tuttavia, è probabile che tu stia lavorando solo in un ambiente .NET 5 in modo da poter rimanere in sicurezza con una net5.0dichiarazione TFM.

Introduzione a .NET 5

.NET 5.0 continua a ospitare lo stesso set familiare di linguaggi, incluse le nuove versioni di C # e F #. Questi aggiungono molte nuove funzionalità e fanno parte di Visual Studio 16.8 o con l'estensione C # Visual Studio Code aggiornata. Microsoft ha spostato il framework e tutte le sue implementazioni, come gran parte di Mono, in un unico repository GitHub, consolidando lo sviluppo e assicurando che tutte le versioni abbiano le stesse funzionalità di base. Man mano che Microsoft passa a .NET 6, introdurrà altre implementazioni di livello superiore, incluso Xamarin.

Il nuovo .NET rimane basato sulle tecniche del compilatore just-in-time sviluppate per l'originale Common Language Runtime. Il nuovo CoreCLR continua a migliorare le prestazioni, lavorando su più architetture di processori. Con l'arrivo dei processori basati su ARM M1 di Apple, il codice scritto in .NET per macOS verrà eseguito come binari nativi su hardware basato su Intel e ARM, quindi il codice non dovrà passare attraverso un secondo livello di emulazione. Il supporto per ARM64 consentirà alle applicazioni .NET 5 di funzionare in modo nativo su Windows su hardware ARM, sfruttando le funzionalità dei processori SQ1 e SQ2 di Microsoft.

Alcuni scenari, come il Web Assembly e i sistemi operativi mobili, richiedono codice precompilato e .NET 5 offre un compilatore anticipato insieme agli strumenti JIT. Il compilatore AOT è ora disponibile per qualsiasi ambiente di sviluppo e il team Uno Platform sta già assistendo a significativi aumenti di velocità per il supporto di Web Assembly, nell'ordine da 7 a 15 volte rispetto al precedente interprete del linguaggio Web Assembly.

Ci sono piani per rendere disponibile il compilatore AOT come opzione per le app che richiedono un avvio rapido e un footprint di memoria inferiore, ad esempio su smartwatch con risorse limitate e hardware IoT. Un'altra opzione sono le distribuzioni di file singoli. Tutto il necessario per un'applicazione (compreso il runtime) è raggruppato in un unico pacchetto, semplificando la distribuzione di applicazioni .NET in contenitori o su sistemi non Windows.

Il nuovo .NET non dovrebbe essere visto isolatamente. Sono importanti anche gli sviluppi aggiuntivi intorno al Web Assembly con Blazor e lo sviluppo dell'interfaccia utente multipiattaforma con MAUI (interfaccia utente dell'app multipiattaforma). Utilizzando una combinazione di queste tecnologie, ben poco non può essere preso di mira con .NET 5, dall'hardware di classe Raspberry Pi ai telefoni Android ai container ospitati da Kubernetes in esecuzione su AWS e Azure.

Verso .NET 6 nel 2021

Un punto importante è che questo è solo un ulteriore passaggio di un processo. .NET 5 è una tecnologia chiave per la separazione delle API Windows dal sistema operativo, l'unione di Project Reunion delle API WinRT e Win32 e il passaggio a WinUI 3 e MAUI come livelli dell'interfaccia utente. Gran parte di questo lavoro continua con il rilascio di .NET 6 nel 2021, l'obiettivo di molti di questi progetti. Non è necessario attendere .NET 6 per iniziare con le migrazioni. Prima inizi, meglio è, dandoti il ​​tempo di affrontare eventuali problemi che potrebbero emergere.

Dovresti vedere .NET 5 come un primo passo nella tappa successiva del viaggio .NET, in cui dovresti iniziare a prendere tutto quel codice legacy e decidere cosa è necessario portare avanti con il porting e l'aggiornamento e cosa deve essere completamente sostituito . Mentre il 2020 volge al termine, è probabile che tu stia pianificando il tuo programma di sviluppo per il 2021. Con questo in mente, .NET 5 dovrebbe essere una lente che ti aiuta a concentrarti su ciò che deve essere fatto per mantenere il tuo patrimonio software pronto per un futuro molto più veloce che non è più legato alle versioni di Windows o a Windows.