Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
.NET è una piattaforma per sviluppatori open source gratuita e multipiattaforma per la creazione di molti tipi di applicazioni. Può eseguire programmi scritti in più linguaggi, con C# essere il più popolare. Si basa su un runtime di ad alte prestazioni usato nell'ambiente di produzione da molte app su larga scala.
Per informazioni su come scaricare .NET e iniziare a scrivere la prima app, vedere Introduzione.
La piattaforma .NET è stata progettata per offrire produttività, prestazioni, sicurezza e affidabilità. Fornisce la gestione automatica della memoria tramite un'Garbage Collector (GC). È sicuro per i tipi e per la memoria, grazie all'uso di un GC e di compilatori di linguaggio rigorosi. Offre concorrenza tramite primitive async
/await
e Task
. Include un ampio set di librerie con funzionalità generali e ottimizzate per le prestazioni su più sistemi operativi e architetture chip.
.NET include i punti di progettazione seguenti:
- La produttività è a tutto stack con runtime, librerie, linguaggio e strumenti che contribuiscono all'esperienza utente degli sviluppatori.
- codice sicuro è il modello di calcolo primario, mentre codice non sicuro abilita ottimizzazioni manuali aggiuntive.
- Codice statico e dinamico sono entrambi supportati, consentendo un ampio set di scenari distinti.
- l'interoperabilità del codice nativo e gli intrinseci hardware sono a basso costo e ad alta fedeltà (accesso alle API non elaborate e alle istruzioni).
- Il codice è portabile attraverso le piattaforme (sistema operativo e architettura del chip), mentre il targeting della piattaforma consente la specializzazione e l'ottimizzazione.
- l'adattabilità tra domini di programmazione (cloud, client, giochi) è abilitata con implementazioni specializzate del modello di programmazione per utilizzo generico.
- standard del settore come OpenTelemetry e gRPC sono favoriti rispetto alle soluzioni su misura.
.NET viene gestito in modo collaborativo da Microsoft e da una community globale. Gli aggiornamenti regolari assicurano agli utenti di distribuire applicazioni sicure e affidabili in ambienti di produzione.
Componenti
.NET include i componenti seguenti:
- Runtime : esegue il codice dell'applicazione.
- Librerie: offre funzionalità di utilità come l'analisi JSON .
- Compilatore: compila il codice sorgente C# (e altri linguaggi) nel codice eseguibile (runtime).
- SDK e altri strumenti: abilitare la compilazione e il monitoraggio delle app con flussi di lavoro moderni.
- Stack di app, ad esempio ASP.NET Core e Windows Form, che consentono di scrivere app.
Il runtime, le librerie e i linguaggi sono i pilastri dello stack .NET. Componenti di livello superiore, come gli strumenti .NET e gli stack di app, come ASP.NET Core, si basano su questi pilastri. C# è il linguaggio di programmazione principale per .NET e gran parte di .NET è scritto in C#.
C# è orientato agli oggetti e il runtime supporta l'orientamento degli oggetti. C# richiede la garbage collection e il runtime fornisce un garbage collector di tracciamento. Le librerie (e anche gli stack di app) modellano tali funzionalità in concetti e modelli a oggetti che consentono agli sviluppatori di scrivere algoritmi in modo produttivo in flussi di lavoro intuitivi.
Le librerie principali espongono migliaia di tipi, molti dei quali si integrano con e alimentano il linguaggio C#. Ad esempio, l'istruzione foreach
di C#consente di enumerare raccolte arbitrarie. Le ottimizzazioni basate su criteri consentono l'elaborazione di raccolte come List<T>
in modo semplice ed efficiente. È possibile affidare la gestione delle risorse al Garbage Collection, ma la pulizia può essere eseguita in modo rapido tramite IDisposable
e il supporto linguistico diretto nell'istruzione using
.
Il supporto per eseguire più operazioni contemporaneamente è fondamentale per praticamente tutti i carichi di lavoro. Potrebbe trattarsi di applicazioni client che eseguono l'elaborazione in background mantenendo reattiva l'interfaccia utente, i servizi che gestiscono molte migliaia di richieste simultanee, dispositivi che rispondono a una moltitudine di stimoli simultanei o macchine ad alta potenza parallelizzando l'elaborazione di operazioni a elevato utilizzo di calcolo. Il supporto per la programmazione asincrona è una funzionalità di prima classe del linguaggio di programmazione C#, che fornisce le parole chiave async
e await
che semplificano la scrittura e la composizione di operazioni asincrone, sfruttando al tempo stesso i vantaggi completi di tutti i costrutti del flusso di controllo che il linguaggio deve offrire.
Il sistema di tipi offre un'ampiezza significativa, rispondendo in modo equilibrato a sicurezza, descrittività, dinamismo e interoperabilità nativa. In primo luogo, il sistema di tipi abilita un modello di programmazione orientato agli oggetti. Include tipi, ereditarietà (classe base singola), interfacce (incluse le implementazioni predefinite del metodo) e invio di metodi virtuali per fornire un comportamento ragionevole per tutti i livelli di tipo consentiti dall'orientamento dell'oggetto. I tipi generici sono onnipresenti e consentono di specializzare le classi in uno o più tipi.
Il runtime .NET fornisce la gestione automatica della memoria tramite un Garbage Collector. Per qualsiasi linguaggio, il modello di gestione della memoria è probabilmente la caratteristica più definita. Questo vale per i linguaggi .NET. .NET ha un processo di ottimizzazione automatica, traccia GC. Mira a offrire un uso "autonomo" nel caso generale, pur offrendo opzioni di configurazione per carichi di lavoro più estremi. L'attuale GC è il risultato di molti anni di investimenti e apprendimento da una moltitudine di carichi di lavoro.
I tipi di valore e i blocchi di memoria allocati allo stack offrono un controllo più diretto e a basso livello sui dati e sull'interoperabilità con la piattaforma nativa, a differenza dei tipi gestiti dal Garbage Collector (GC) di .NET. La maggior parte dei tipi primitivi in .NET, come i tipi integer, sono tipi valore e gli utenti possono definire i propri tipi con semantica simile. I tipi valore sono completamente supportati tramite il sistema dei generics di .NET, il che significa che i tipi generici come List<T>
possono fornire rappresentazioni di memoria piatte e senza overhead delle raccolte di tipi di valore.
Reflection è un paradigma di "programmi come dati", consentendo a una parte di un programma di interrogare in modo dinamico e invocare un'altra parte, in termini di assembly, tipi e membri. È particolarmente utile per i modelli di programmazione e gli strumenti ad associazione tardiva.
Le eccezioni sono il modello primario di gestione degli errori in .NET. Le eccezioni hanno il vantaggio che le informazioni sugli errori non devono essere rappresentate nelle firme del metodo o gestite da ogni metodo. La gestione corretta delle eccezioni è essenziale per l'affidabilità dell'applicazione. Per evitare che l'app si arresti in modo anomalo, è possibile gestire intenzionalmente le eccezioni previste nel codice. Un'app arrestata in modo anomalo è più affidabile e diagnosticabile rispetto a un'app con un comportamento indefinito.
Gli stack di app, ad esempio ASP.NET Core e Windows Form, si basano e sfruttano le librerie di basso livello, il linguaggio e il runtime. Gli stack di app definiscono il modo in cui le app vengono costruite e il relativo ciclo di vita di esecuzione.
L'SDK e altri strumenti consentono un'esperienza di sviluppo moderna, sia in un desktop per sviluppatori che per l'integrazione continua (CI). L'esperienza di sviluppo moderna include la possibilità di compilare, analizzare e testare il codice. I progetti .NET possono spesso essere compilati da un singolo comando dotnet build
, che orchestra il ripristino dei pacchetti NuGet e la compilazione delle dipendenze.
NuGet è la gestione pacchetti per .NET. Contiene centinaia di migliaia di pacchetti che implementano funzionalità per molti scenari. La maggior parte delle app si basa su pacchetti NuGet per alcune funzionalità. La Galleria NuGet viene gestita da Microsoft.
Gratuito e open source
.NET è gratuito, open source ed è un progetto .NET Foundation. .NET è mantenuto da Microsoft e dalla community su GitHub in diversi repository.
I file binari e di origine .NET sono concessi in licenza con la licenza MIT . Altre licenze di si applicano a Windows.
Appoggiare
.NET è supportato da più organizzazioni che funzionano per garantire che .NET possa essere eseguito in più sistemi operativi e venga mantenuto aggiornato. Può essere usato nelle architetture Arm64, x64 e x86.
Le nuove versioni di .NET vengono rilasciate annualmente a novembre, in base alle versioni di e ai criteri di supporto. Viene aggiornato mensilmente il martedì patch (secondo martedì), in genere alle 10:00 ora del Pacifico.
Ecosistema .NET
Esistono più varianti di .NET, ognuna delle quali supporta un tipo diverso di app. La ragione di più varianti è parte storica, parte tecnica.
Implementazioni di .NET:
- .NET Framework - .NET originale. Fornisce l'accesso alle ampie funzionalità di Windows e Windows Server. È supportato attivamente, in fase di manutenzione.
- Mono - Community originale e .NET open source. Implementazione multipiattaforma di .NET Framework. Supportato attivamente per Android, iOS e WebAssembly.
- .NET (Core) - .NET moderno. Implementazione multipiattaforma e open source di .NET, ripensato all'età del cloud, pur rimanendo significativamente compatibile con .NET Framework. Supportato attivamente per Linux, macOS e Windows.