Glossario .NET

L'obiettivo principale di questo glossario è chiarire i significati dei termini e degli acronimi selezionati che appaiono spesso nella documentazione di .NET.

AOT

Compilatore Ahead Of Time.

Simile a JIT, questo compilatore esegue anche la conversione del linguaggio IL in codice macchina. A differenza della compilazione JIT, la compilazione AOT viene eseguita prima dell'esecuzione dell'applicazione, generalmente in un computer diverso. Poiché le catene di strumenti AOT non vengono compilate in fase di esecuzione, non è necessario ridurre al minimo il tempo impiegato per la compilazione. e possono dedicare più tempo all'ottimizzazione. Il contesto di AOT è l'intera applicazione, pertanto il compilatore AOT esegue anche il collegamento tra i moduli e l'analisi dell'intero programma, di conseguenza vengono seguiti tutti i riferimenti e viene generato un unico file eseguibile.

Vedere CoreRT e .NET Native.

modello di app

API specifica del carico di lavoro. Di seguito sono riportati alcuni esempi.

  • ASP.NET
  • API Web ASP.NET
  • Entity Framework (EF)
  • WPF (Windows Presentation Foundation)
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Windows Form

ASP.NET

Implementazione ASP.NET originale fornita con .NET Framework, nota anche come ASP.NET 4.x e ASP.NET Framework.

A volte ASP.NET è un termine generico che fa riferimento sia al ASP.NET originale che a ASP.NET Core. Il significato che il termine contiene in qualsiasi istanza specificata è determinato dal contesto. Fare riferimento a ASP.NET 4.x quando si vuole chiarire che non si sta usando ASP.NET per indicare entrambe le implementazioni.

Vedere Documentazione di ASP.NET.

ASP.NET Core

Implementazione open source multipiattaforma e ad alte prestazioni di ASP.NET.

Vedere Documentazione di ASP.NET Core.

assembly

Un file .dll o .exe che può contenere una raccolta di API che possono essere chiamate da applicazioni o altri assembly.

Un assembly contiene tipi quali interfacce, classi, strutture, enumerazioni e delegati. Gli assembly presenti nella cartella bin di un progetto sono anche denominati binari. Vedere anche libreria.

BCL

Libreria di classi di base.

Set di librerie che comprende gli spazi dei nomi System.* (e in modo limitato quelli Microsoft.*. La libreria di classi base è un framework generico di livello inferiore su cui si basano framework applicazione di livello superiore, ad esempio ASP.NET Core.

Il codice sorgente del BCL per .NET è contenuto nel repository di runtime .NET. La maggior parte di queste API BCL è disponibile anche in .NET Framework, quindi è possibile considerare questo codice sorgente come un fork del codice sorgente BCL di .NET Framework.

I termini seguenti spesso fanno riferimento alla stessa raccolta di API a cui fa riferimento BCL:

CLR

Common Language Runtime.

Il significato esatto dipende dal contesto. Common Language Runtime si riferisce in genere al runtime di .NET Framework o al runtime di .NET.

CLR gestisce l'allocazione e la gestione della memoria. ClR è anche una macchina virtuale che non solo esegue le app, ma genera e compila codice in tempo reale usando un compilatore JIT .

L'implementazione CLR per .NET Framework è solo Windows.

L'implementazione CLR per .NET (nota anche come CLR Core) viene compilata dalla stessa codebase di .NET Framework CLR. Originariamente, Core CLR era il runtime di Silverlight ed è stato progettato per essere eseguito su più piattaforme, in particolare Windows e OS X. È ancora un runtime multipiattaforma , ora incluso il supporto per molte distribuzioni Linux.

Vedere anche runtime.

Core CLR

Common Language Runtime per .NET.

Vedere CLR.

CoreRT

A differenza di CLR, CoreRT non è una macchina virtuale, il che significa che non include le funzionalità per generare ed eseguire codice in tempo reale perché non include un JIT. Tuttavia, include GC e la possibilità di identificazione dei tipi di runtime (RTTI) e reflection. Tuttavia, il sistema di tipi di questo runtime è progettato in modo tale da rendere superflui i metadati per la reflection. La mancata richiesta di metadati consente di avere una catena di strumenti AOT che può collegare i metadati superflui e,soprattutto, identificare il codice che l'app non usa. CoreRT è in fase di sviluppo.

Vedere Introduzione a CoreRT e al lab di runtime .NET.

multipiattaforma

Possibilità di sviluppare ed eseguire un'applicazione che può essere usata in più sistemi operativi diversi, ad esempio Linux, Windows e iOS, senza dover riscrivere in modo specifico per ognuno di essi. Ciò consente il riutilizzo e la coerenza del codice tra applicazioni su piattaforme diverse.

Vedere piattaforma.

ecosistema

Tutto il software di runtime, gli strumenti di sviluppo e le risorse della community usati per creare ed eseguire applicazioni per una determinata tecnologia.

Il termine "ecosistema .NET" è diverso da termini simili, quali "stack .NET", quando è inserito in app e librerie di terze parti. Eccone un esempio in una frase:

  • "La motivazione alla base di .NET Standard era quella di stabilire una maggiore uniformità nell'ecosistema .NET".

framework

In termini generali, una raccolta completa di API che consente di semplificare lo sviluppo e la distribuzione di applicazioni basate su una particolare tecnologia. In tal senso, ASP.NET Core e Windows Form sono esempi di framework applicazione. Le parole framework e libreria vengono spesso usate come sinonimi.

La parola "framework" ha un significato diverso nei termini seguenti:

In alcuni casi "framework" si riferisce a un'implementazione di .NET.

librerie framework

Il significato dipende dal contesto. Può fare riferimento alle librerie di framework per .NET, nel qual caso fa riferimento alle stesse librerie a cui fa riferimento BCL . Può anche fare riferimento alle librerie framework ASP.NET Core , che si basano sulla libreria BCL e forniscono API aggiuntive per le app Web.

GC

Garbage Collector.

Il Garbage Collector è un'implementazione di un sistema di gestione automatica della memoria. Libera infatti la memoria occupata da oggetti che non vengono più usati.

Vedere Garbage Collection.

IL

Linguaggio intermedio.

Con i linguaggi .NET di livello superiore, ad esempio C#, la compilazione viene eseguita fino a un set di istruzioni indipendente dall'hardware, che viene chiamato linguaggio intermedio (IL). Tale linguaggio intermedio è noto anche come MSIL (Microsoft IL) o CIL (Common IL).

JIT

Compilatore JIT.

Simile a AOT, questo compilatore esegue la conversione del linguaggio IL in codice macchina riconosciuto dal processore. A differenza di AOT, la compilazione JIT viene eseguita su richiesta e nello stesso computer in cui deve essere eseguito il codice. Poiché la compilazione JIT si verifica durante l'esecuzione dell'applicazione, il tempo di compilazione fa parte del tempo di esecuzione. I compilatori JIT devono quindi bilanciare il tempo impiegato per l'ottimizzazione del tempo con i possibili risparmi ottenuti dal codice risultante. Ma dal momento che un compilatore JIT riconosce l'hardware effettivamente in uso, gli sviluppatori non devono più fornire implementazioni diverse.

implementazione di .NET

Un'implementazione di .NET include:

  • Uno o più runtime. Esempi: CLR, CoreRT.
  • Libreria di classi che implementa una versione di .NET Standard e può includere API aggiuntive. Esempi: gli ACL per .NET Framework e .NET.
  • Facoltativamente, uno o più framework applicazione. Esempi: ASP.NET, Windows Form e WPF sono inclusi in .NET Framework e .NET.
  • Facoltativamente, strumenti di sviluppo. Alcuni strumenti di sviluppo sono condivisi tra più implementazioni.

Esempi di implementazioni di .NET:

Per altre informazioni, vedere Implementazioni di .NET.

libreria

Raccolta di API che possono essere chiamate da app o altre librerie. Una libreria .NET è composta da uno o più assembly.

Le parole libreria e framework vengono spesso usate come sinonimi.

Mono

Implementazione open source multipiattaforma.NET usata quando è necessario un runtime di piccole dimensioni. È il runtime che supporta le applicazioni Xamarin in Android, Mac, iOS, tvOS e watchOS ed è incentrato principalmente sulle app che richiedono un footprint ridotto.

Supporta tutte le versioni attualmente pubblicate di .NET Standard.

In precedenza, Mono implementava le API di dimensioni maggiori di .NET Framework ed emulava alcune delle funzionalità più diffuse su Unix. A volte viene usato per eseguire applicazioni .NET che si basano su tali funzionalità in Unix.

Mono viene in genere usato con un compilatore JUST-In-Time, ma include anche un compilatore statico completo (compilazione in anticipo) usato su piattaforme come iOS.

Per altre informazioni, vedere la documentazione di Mono.

AOT nativo

Modalità di distribuzione in cui l'app è autonoma e viene compilata in anticipo nel codice nativo al momento della pubblicazione. Le app AOT native non usano un compilatore JIT in fase di esecuzione. Possono essere eseguiti in computer in cui non è installato il runtime .NET.

Per altre informazioni, vedere Distribuzione AOT nativa.

.NET

.NET ha due significati e quello previsto dipende dal contesto:

  • .NET può essere usato come termine generico per .NET Standard e per tutte le implementazioni e i carichi di lavoro .NET.
  • .NET si riferisce più frequentemente all'implementazione open source multipiattaforma e ad alte prestazioni di .NET usata per essere denominata .NET Core. Può anche essere definito .NET 5 (e .NET Core) e versioni successive o solo .NET 5+.

Ad esempio, il primo significato è destinato in frasi come "implementazioni di .NET". Il secondo significato è destinato a nomi come .NET SDK e l'interfaccia della riga di comando di .NET. In assenza di contesto che indica che il primo significato è previsto, presupporre che il secondo significato sia previsto.

Le versioni precedenti di .NET sono note come .NET Core da 1 a 3.1. I numeri di versione ignorano 4 e la versione che ha seguito la versione 3.1 è nota come .NET 5, eliminando "Core" dal nome. L'eliminazione di "Core" è stata eseguita per sottolineare che questa implementazione di .NET è quella consigliata per tutti i nuovi sviluppi. L'eliminazione della versione 4 è stata eseguita per evitare di confondere questa implementazione più recente di .NET con l'implementazione precedente nota come .NET Framework. La versione corrente di .NET Framework è 4.8.1.

.NET è sempre completamente in maiuscolo, mai ".Net".

Vedere la documentazione di .NET.

CLI .NET

Toolchain multipiattaforma per lo sviluppo di applicazioni e librerie per .NET. Nota anche come interfaccia della riga di comando di .NET Core.

Vedere Interfaccia della riga di comando di .NET.

.NET Core

Vedere .NET.

.NET Framework

Implementazione di .NET eseguita solo in Windows. Include Common Language Runtime (CLR), la libreria di classi di base (BCL) e le librerie del framework applicazioni, ad esempio ASP.NET, Windows Form e WPF.

Vedere Guida a .NET Framework.

.NET Native

Catena di strumenti del compilatore che produce codice nativo in anticipo (AOT), anziché JIT (Just-In-Time).

La compilazione viene eseguita nel computer dello sviluppatore in modo analogo al funzionamento di un compilatore e un linker C++. Il codice inutilizzato viene rimosso e viene dedicato più tempo all'ottimizzazione. Il codice viene estratto dalle librerie e unito nel file eseguibile. Il risultato è un singolo modulo che rappresenta l'intera app.

UWP è il framework dell'applicazione supportato da .NET Native.

Vedere la documentazione di .NET Native.

.NET SDK

Set di librerie e strumenti che consentono agli sviluppatori di creare applicazioni e librerie per .NET. Noto anche come .NET Core SDK.

Include l'interfaccia della riga di comando di .NET per la creazione di app, librerie .NET e runtime per la compilazione e l'esecuzione di app e il file eseguibile dotnet (dotnet.exe) che esegue i comandi dell'interfaccia della riga di comando ed esegue applicazioni.

Vedere Panoramica di .NET SDK.

.NET Standard

Specifica formale delle API .NET disponibili in ogni implementazione di .NET.

La specifica .NET Standard è talvolta detta libreria. Dal momento che una libreria include le implementazioni delle API e non solo di specifiche (interfacce), è fuorviante usare il termine "libreria" in riferimento a .NET Standard.

Vedere .NET Standard.

NGen

Generazione di immagini native.

Questa tecnologia può essere considerata come un compilatore JIT persistente. Il codice viene in genere compilato nel computer stesso in cui viene eseguito il codice, ma la compilazione viene eseguita di solito durante l'installazione.

pacchetto

Un pacchetto NuGet, o semplicemente un pacchetto, è un file .zip con uno o più assembly con lo stesso nome insieme a metadati aggiuntivi, ad esempio il nome dell'autore.

Il file .zip ha un'estensione nupkg e può contenere asset, ad esempio file .dll e file .xml , per l'uso con più framework e versioni di destinazione. Quando vengono installati in un'app o una libreria, gli asset appropriati vengono selezionati in base al framework di destinazione specificato dall'app o dalla libreria. Gli asset che definiscono l'interfaccia si trovano nella cartella ref, mentre quelli che definiscono l'implementazione si trovano nella cartella lib.

piattaforma

Sistema operativo e hardware in cui viene eseguito, ad esempio Windows, macOS, Linux, iOS e Android.

Ecco alcuni esempio di utilizzo nelle frasi:

  • ".NET Core è un'implementazione multipiattaforma di .NET".
  • "I profili PCL rappresentano le piattaforme Microsoft, mentre .NET Standard è indipendente dalla piattaforma."

La documentazione legacy di .NET usa talvolta ".NET platform" per indicare un'implementazione di .NET o lo stack .NET, incluse tutte le implementazioni. Entrambi questi utilizzi tendono a confondersi con il significato principale (sistema operativo/hardware), quindi cerchiamo di evitare questi utilizzi.

"Piattaforma" ha un significato diverso nella frase "piattaforma per sviluppatori", che si riferisce al software che fornisce strumenti e librerie per la compilazione e l'esecuzione di app. .NET è una piattaforma per sviluppatori open source multipiattaforma per la creazione di molti tipi diversi di applicazioni.

POCO

Un oggetto POCO, o una normale classe/CLR , è una struttura di dati .NET che contiene solo proprietà o campi pubblici. Un POCO non deve contenere altri membri, ad esempio:

  • metodi
  • eventi
  • Delegati

Questi oggetti vengono usati principalmente come oggetti di trasferimento dei dati (DTO). Un poco puro non erediterà un altro oggetto o implementerà un'interfaccia. È comune usare i POCO con la serializzazione.

runtime

In generale, l'ambiente di esecuzione per un programma gestito. Il sistema operativo è parte dell'ambiente di runtime, ma non del runtime di .NET. Ecco alcuni esempi di runtime .NET in questo senso della parola :

  • Common Language Runtime (CLR)
  • .NET Native (per la piattaforma UWP)
  • Runtime di Mono

La parola "runtime" ha un significato diverso in alcuni contesti:

  • Runtime .NET nella pagina di download di .NET 5.

    È possibile scaricare il runtime .NET o altri runtime, ad esempio il runtime di ASP.NET Core. Un runtime in questo utilizzo è il set di componenti che devono essere installati in un computer per eseguire un'app dipendente dal framework nel computer. Il runtime .NET include CLR e il framework condiviso .NET, che fornisce LCL.

  • Librerie di runtime .NET

    Fa riferimento alle stesse librerie a cui fa riferimento BCL . Tuttavia, altri runtime, ad esempio il runtime di ASP.NET Core, dispongono di framework condivisi diversi, con librerie aggiuntive basate sull'elenco di controllo di base.

  • Identificatore di runtime (RID).

    Il runtime in questo caso indica la piattaforma del sistema operativo e l'architettura della CPU in cui viene eseguita un'app .NET, ad esempio : linux-x64.

  • In alcuni casi viene usato "runtime" nel senso di un'implementazione di .NET, come negli esempi seguenti:

    • "I diversi runtime .NET implementano versioni specifiche di .NET Standard. ... Ciascuna versione del runtime .NET annuncia la versione .NET Standard più recente supportata...".
    • "Le librerie destinate all'esecuzione in più runtime devono essere destinate a questo framework". (riferimento a .NET Standard)

framework condiviso

Il significato dipende dal contesto. . NET Shared Framework fa riferimento alle librerie incluse nel runtime .NET. In questo caso, il framework condiviso per .NET fa riferimento alle stesse librerie a cui fa riferimento BCL .

Esistono altri framework condivisi. Il framework condiviso ASP.NET Core si riferisce alle librerie incluse nel runtime di ASP.NET Core, che include l'elenco di classi di controllo di base e le API aggiuntive per l'uso da parte delle app Web.

Per le app dipendenti dal framework, il framework condiviso è costituito da librerie contenute negli assembly installati in una cartella nel computer che esegue l'app. Per le app autonome, gli assembly del framework condiviso sono inclusi nell'app.

Per altre informazioni, vedere Approfondimenti sulle primitive di .NET Core, parte 2: framework condiviso.

stack

Set di tecnologie di programmazione che vengono usate in combinazione per compilare ed eseguire applicazioni.

"Lo stack .NET" si riferisce a .NET Standard e a tutte le implementazioni .NET. La frase "uno stack .NET" può fare riferimento a un'implementazione di .NET.

framework di destinazione

Raccolta di API su cui si basa un'app o una libreria .NET.

Un'app o una libreria può essere destinata a una versione di .NET Standard (ad esempio.NET Standard 2.0), che è una specifica per un set standardizzato di API in tutte le implementazioni .NET. Un'app o una libreria può anche essere destinata a una versione di un'implementazione specifica di .NET. In tal caso, ottiene l'accesso ad API specifiche dell'implementazione. Ad esempio, un'app destinata a Xamarin.iOS ottiene l'accesso ai wrapper di API iOS forniti da Xamarin.

Per alcuni framework di destinazione( ad esempio . NET Framework) le API disponibili sono definite dagli assembly installati da un'implementazione .NET in un sistema, che può includere API del framework dell'applicazione (ad esempio, ASP.NET, WinForms). Per i framework di destinazione basati su pacchetti, le API del framework sono definite dai pacchetti installati nell'app o nella libreria.

Vedere Framework di destinazione.

TFM

Moniker framework di destinazione.

Formato di token standardizzato per specificare il framework di destinazione di un'app o di una libreria .NET. In genere, per fare riferimento ai framework di destinazione si usa un nome breve, ad esempio net462. I TFM con formato lungo (ad esempio .NETFramework,Version=4.6.2) esistono, ma in genere non vengono usati per specificare un framework di destinazione.

Vedere Framework di destinazione.

UWP

Piattaforma UWP (Universal Windows Platform).

Implementazione di .NET usata per la creazione di applicazioni e software Windows abilitate per il tocco per Internet delle cose (IoT). È progettato per unificare i diversi tipi di dispositivi che potresti voler usare come destinazione, tra cui PC, tablet, telefoni e persino Xbox. La piattaforma UWP offre molti servizi, ad esempio un App Store centralizzato, un ambiente di esecuzione (AppContainer) e un set di API di Windows da usare invece di Win32 (WinRT). Le app possono essere scritte in C++, C#, Visual Basic e JavaScript. Quando si usano C# e Visual Basic, le API .NET vengono fornite da .NET.

Carico di lavoro

Tipo di app che qualcuno sta creando. Più generico del modello di app. Ad esempio, nella parte superiore di ogni pagina della documentazione di .NET, inclusa questa, è un elenco a discesa per Carichi di lavoro, che consente di passare alla documentazione per Web, Mobile, Cloud, Desktop e Machine Learning & Data.

In alcuni contesti, il carico di lavoro fa riferimento a una raccolta di funzionalità di Visual Studio che è possibile scegliere di installare per supportare un particolare tipo di app. Per un esempio, vedere Selezionare un carico di lavoro.

Vedi anche