Oggi annunciamo che la prossima versione dopo .NET Core 3.0 sarà .NET 5. Questa sarà la prossima grande uscita della serie .NET.
In futuro ci sarà un solo .NET, con cui potrai sviluppare Windows, Linux, macOS, iOS, Android, tvOS, watchOS e WebAssembly, tra gli altri.
Stiamo introducendo nuove API .NET, funzionalità di runtime e funzionalità linguistiche in .NET 5.
A partire dal progetto .NET Core, abbiamo aggiunto circa cinquantamila API .NET Framework alla piattaforma. .NET Core 3.0 colma la maggior parte delle lacune rimanenti di funzionalità di .NET Framework 4.8, supportando Windows Forms, WPF ed Entity Framework 6. .NET 5 si basa su questo lavoro, sfruttando le migliori funzionalità di .NET Core e Mono per creare una piattaforma. Puoi usarlo per tutto il codice .NET moderno.
Intendiamo rilasciare .NET 5 a novembre 2020 e lanciare la prima anteprima nella prima metà del 2020. Sarà supportato in futuri aggiornamenti per Visual Studio 2019, Visual Studio per Mac e Visual Studio Code.
.NET 5 = .NET Core vNext
.NET 5 è il passo successivo in .NET Core. Il progetto mira a migliorare il . NET:
- Costruisci un runtime e un framework .NET che possano essere usati ovunque, con un comportamento runtime unificato ed esperienza da sviluppatore.
- Sfruttando appieno .NET Core, . NET Framework, Xarain e Mono per estendere le capacità di .NET.
- Costruendo il prodotto da un unico codice base, gli sviluppatori (Microsoft e la community) possono lavorare insieme ed estendere insieme per migliorare tutti gli scenari.
Questo nuovo progetto e direzione rappresenta un punto di svolta importante per .NET. Con .NET 5, il tuo codice e i file di progetto saranno gli stessi indipendentemente dal tipo di applicazione che stai costruendo. Ogni app ha accesso alle stesse funzionalità di runtime, API e linguaggio. Include anche miglioramenti delle prestazioni di CoreFX, che vengono realizzati quasi quotidianamente.
Tutto ciò che ami di .NET Core continuerà a esistere:
- Open source e orientato alla comunità su GitHub.
- Implementazione multipiattaforma.
- Supporta l'utilizzo di funzionalità specifiche per piattaforma come moduli Windows e WPF su Windows e binding nativi per ciascuna piattaforma nativa da Xamarin.
- Alte prestazioni.
- Installa fianco a fianco.
- File di progetto piccoli (stile SDK).
- Compatibile con le interfacce a riga di comando (CLI).
- Integrazione con Visual Studio, Visual Studio per Mac e Visual Studio Code.
Ci sono anche alcune novità:
- Avrai più opzioni per la tua esperienza di esecuzione (ne parlerò più avanti).
- L'interoperabilità Java sarà disponibile su tutte le piattaforme.
- Più sistemi operativi supporteranno l'interoperabilità Objective-C e Swift.
- CoreFX sarà ampliato per supportare il forward of time (AOT) per .NET, un footprint più ridotto e il supporto per più sistemi operativi.
Rilasceremo .NET Core 3.0 a settembre di quest'anno, .NET 5 a novembre 2020, e poi intendiamo rilasciare una versione principale del . NET:
Abbiamo saltato la versione 4 perché avrebbe confonduto gli utenti familiari con il .NET Framework, che esiste da molto tempo con la serie 4.x. Inoltre, vogliamo comunicare chiaramente che .NET 5 rappresenta il futuro della piattaforma .NET. Chiamarla .NET 5 la rende la versione più alta che abbiamo mai rilasciato.
Cogliiamo anche questa occasione per semplificare la denominazione. Pensiamo che se un solo .NET è il migliore, non abbiamo bisogno di un termine chiarificante come "Core". Il nome più breve è una semplificazione e trasmette anche il messaggio che .NET 5 ha funzionalità e comportamento uniformi. Naturalmente, puoi continuare a usare il nome ".NET Core" se vuoi.
Esperienza in tempo reale
Mono è l'implementazione originale multipiattaforma di .NET. È nato come un'alternativa open-source al .NET Framework e si è poi trasformato in dispositivi mobili con la popolarità di iPhone/iOS e dispositivi Android. Mono è un runtime utilizzato come parte di Xamarin.
CoreCLR è un runtime utilizzato come parte di .NET Core. Viene utilizzato principalmente per supportare applicazioni cloud, incluso il più grande servizio di Microsoft, ed è ora impiegato anche in applicazioni desktop Windows, IoT e machine learning.
In sintesi, i runtime .NET Core e Mono condividono molte somiglianze (dopotutto, sono entrambi runtime .NE), ma hanno anche caratteristiche uniche e preziose. Ha molto senso rendere possibile scegliere l'esperienza di esecuzione che desideri. Stiamo rendendo CoreCLR e Mono intercambiabili tra loro. Lo renderemo semplice come costruire uno switch per scegliere tra diverse opzioni di runtime.
Le sezioni seguenti descrivono il focus principale che intendiamo utilizzare per .NET 5. Offrono una prospettiva chiara su come intendiamo far evolvere questi due runtime, individualmente e insieme.
Alta produttività e alta produttività
Fin dall'inizio, .NET si è affidato a compilatori just-in-time (JIT) per convertire il codice del linguaggio intermedio (IL) in codice macchina ottimizzato. Da allora, abbiamo costruito un runtime gestito basato su JIT, leader nel settore, con un throughput molto elevato e che migliora anche l'esperienza degli sviluppatori, rendendo la programmazione veloce e semplice.
JIT è ideale per scenari cloud e client di lunga durata. Sono in grado di generare codice configurato per macchine specifiche, incluse istruzioni CPU specifiche. JIT può anche rigenerare metodi a runtime, una tecnica che rende JIT più veloce, pur avendo l'opzione di generare versioni altamente ottimizzate del codice se dovesse diventare un metodo frequentemente utilizzato.
I nostri sforzi per far funzionare ASP.NET Core più velocemente sul benchmark Techpower sono un ottimo esempio della potenza del JIT e del nostro investimento in CoreCLR. I nostri sforzi per rafforzare .NET Core per i container sono anche una testimonianza della capacità del runtime di adattarsi dinamicamente a ambienti vincolati.
Gli strumenti per sviluppatori sono un altro ottimo esempio di quanto JIT sia davvero ottimo, come dotnet watch tools o edit and continue. Gli strumenti spesso devono compilare e caricare il codice più volte in un unico processo senza riavviarsi, e devono farlo molto rapidamente.
Gli sviluppatori che utilizzano .NET Core o .NET Framework si affidano principalmente al JIT. Pertanto, l'esperienza dovrebbe essere familiare.
L'esperienza predefinita per la maggior parte degli scenari di funzionamento .NET 5 utilizza il runtime CoreCLR basato su JIT. Due eccezioni degne di nota sono iOS e client Blazor (web assembly), poiché entrambi richiedono una compilazione nativa in anticipo (AOT).
Avvio veloce, ingombro ridotto e basso utilizzo di memoria
La maggior parte del progetto Mono si è concentrata su dispositivi mobili e console. Una caratteristica chiave e un risultato del progetto è il compilatore AOT .NET basato sul progetto LLVM, leader nel settore. Il compilatore AOT Mono permette di integrare codice .NET in un eseguibile nativo che può funzionare su un computer, proprio come il codice C++. Le applicazioni compilate tramite AOT possono funzionare in modo efficiente in località più piccole e scambiare il throughput per l'avvio quando necessario.
Il progetto Blazor sta già usando Mono AOT. Questo sarà uno dei primi progetti a passare a .NET 5. Lo usiamo come una delle opzioni per dimostrare questo piano.
Esistono due tipi di soluzioni AOT:
- Richiede una soluzione compilata al 100% AOT.
- La maggior parte del codice è una soluzione compilata in AOT, ma JIT o interpreti possono essere usati per pattern di codice non compatibili con AOT (come i generici). Mono AOT supporta entrambi i casi. Apple richiede il primo AOT per iOS e alcune console per motivi di sicurezza. Il secondo metodo è un'opzione migliore perché offre i vantaggi dell'AOT ed evita alcuni degli svantaggi.
.NET Native è il nostro compilatore AOT per applicazioni Windows UWP, ed è anche un esempio del primo tipo AOT elencato sopra. In questa particolare implementazione, limitiamo l'API .NET e le funzionalità che puoi utilizzare. Abbiamo imparato da questa esperienza che le soluzioni AOT devono coprire tutti gli aspetti delle API e dei pattern .NET.
La compilazione AOT è ancora richiesta su iOS, assembly web e alcune console. Per applicazioni che richiedono un avvio più rapido o una bassa impronta, renderemo la compilazione AOT un'opzione.
La nascita del progetto
Abbiamo iniziato questo progetto a dicembre 2018 con un team tecnico a Boston. I responsabili del design del team .NET (Mono/Xamarin e .NET Core) e di Unity hanno presentato una varietà di capacità tecniche e direzioni architettoniche.
Ora stiamo portando avanti questo progetto come team con una serie di deliverable. Abbiamo fatto molti progressi su diversi progetti da dicembre:
- Viene definito un livello minimo che definisce il livello di codice gestito a runtime <-> con l'obiettivo di ottenere il >99% del codice pubblico CoreFX.
- MonoVM ora può utilizzare CoreFX e le sue librerie di classi.
- Esegui tutti i test CoreFX su MonoVM con l'implementazione CoreFX.
- Esegui ASP.NET applicazioni Core 3.0 con MonoVM.
- Esegui MonoDevelop su CoreCLR, poi esegui Visual Studio per Mac.
Migra a un singolo . L'implementazione di .NET solleva alcune domande importanti: quale sarà il framework target? Le regole di compatibilità dei pacchetti NuGet sono le stesse? Quali carichi di lavoro dovrebbe supportare lo SDK .NET 5? Come faccio a programmare per un'architettura specifica? Abbiamo ancora bisogno dello standard .NET? Stiamo lavorando su questi problemi e presto condivideremo il documento di progettazione per farvi leggere e fornire un feedback.
Epilogo
Il progetto .NET 5 rappresenta una direzione nuova e importante ed entusiasmante per .NET. Vedrai .NET diventare più semplice, ma anche con una gamma più ampia di funzionalità e utilità. Tutti i nuovi sviluppi e funzionalità faranno parte di .NET 5, incluse le nuove versioni di C#.
Vediamo un futuro promettente in cui si potranno utilizzare le stesse API e linguaggi .NET per mirare a una vasta gamma di tipi di applicazioni, sistemi operativi e architetture silicon. In Visual Studio, Visual Studio per Mac, Visual Studio Code, Azure DevOps o nella riga di comando, è facile cambiare la configurazione della build per creare applicazioni diverse.
Link originale:Il login del link ipertestuale è visibile.
|