# .NET Framework

.NET Framework è l'ambiente di esecuzione runtime della piattaforma tecnologica .NET in cui vengono gestite le applicazioni destinate allo stesso .NET Framework. È costituito dal Common Language Runtime, che fornisce la gestione della memoria e altri servizi di sistema, e da un'ampia libreria di classi, che consente ai programmatori di sfruttare codice per tutte le aree principali dello sviluppo di applicazioni.
Disponibile solo per sistemi Windows, è possibile usare il suo successore .NET Core per eseguire applicazioni per i sistemi Windows, MacOS e Linux.

## Componenti del .NET Framework

.NET si compone di:
* Ambiente di esecuzione Common Language Runtime o CLR.
* Libreria di classi.

## Descrizione dei componenti
### CLR

Il Common Language Runtime è il motore d'esecuzione della piattaforma .NET esegue cioè codice IL (Intermediate Language) compilato con compilatori che possono avere come target il CLR.
Tale componente si occupa di compilare just-in-time (al volo) il codice CIL in linguaggio macchina, direttamente eseguibile dalla CPU.

### Librerie

In .NET Framework sono incluse librerie generiche e librerie per aree specifiche dello sviluppo di applicazioni, ad esempio ASP.NET per applicazioni Web, ADO.NET per l'accesso ai dati, Windows Communication Foundation per applicazioni orientate ai servizi e Windows Presentation Foundation per le applicazioni desktop Windows.

## Versioni

.NET Framework è presente in alcune versioni del sistema operativo Windows già al momento dell'installazione dello stesso SO. Se dovesse essere installata un'applicazione per cui è richiesta una specifica versione di .NET Framework, è possibile che tramite il programma di installazione dell'applicazione effettui anche l'installazione del framework richiesto nel computer. In altri casi una finestra di dialogo potrebbe avvertire che l'applicazione che stiamo installando necessita di una specifica versione del framework e che sarà necessario procedere con un'installazione manuale. Il .NET framework è disinstallabile utilizzando le normali procedure che vengono usate per tutte le altre applicazioni. Dalla versione 8 di Windows il framework è divenuto parte integrante del sistema operativo e non potrà essere disinstallato in maniera indipendente (limitatamente alla versione del framework richiesta e precaricata al momento dell'installazione del SO). È possibile installare sullo stesso computer più versioni del framework in quanto sono indipendenti l'una dall'altra.
Microsoft cominciò lo sviluppo della tecnologia .NET verso la fine degli anni novanta, sotto il nome di Next Generation Windows Services (NGWS). La prima beta del Framework .NET fu distribuita verso la fine del 2000.
La prima versione stabile arrivò nel gennaio del 2002 con la versione 1.0 e, nel corso degli anni, è stato aggiornato più volte fino alla versione 4.8.1, distribuita ad agosto 2022.
Non essendo previste ulteriori nuove versioni, .NET Framework riceverà solo correzioni mensili di bug di sicurezza e affidabilità.
| Versione | Build pubblicata | Data di distribuzione |
| 1.0 | 1.0.3705.0 | 05/01/2002 |
| 1.1 | 1.1.4322.573 | 01/04/2004 |
| 2.0 | 2.0.50727.42 | 07/11/2005 |
| 3.0 | 3.0.4506.30 | 06/11/2006 |
| 3.5 | 3.5.21022.8 | 19/11/2007 |
| 4.0 | 4.0.30319.1 | 12/04/2010 |
| 4.5 | 4.5.50709.17929 | 09/10/2012 |
| 4.5.1 | 4.5.50938.18408 | 12/10/2013 |
| 4.5.2 | 4.5.51209.34209 | 06/05/2014 |
| 4.6 | 4.6.81.0 | 15/10/2015 |
| 4.6.1 | 4.6.1055.0 | 17/11/2015 |
| 4.6.2 | 4.6.1590.0 | 20/07/2016 |
| 4.7 | 4.7.2053.0 | 02/05/2017 |
| 4.7.1 | 4.7.2558.0 | 13/10/2017 |
| 4.7.2 | 4.7.3062.0 | 30/04/2018 |
| 4.8 | 4.8.4115.0 | 18/04/2019 |
| 4.8.1 | 4.8.9037.6 | 09/08/2022 |

### .NET Framework 1.0

La prima versione del .NET Framework fu pubblicata il 13 febbraio 2002 per Windows 98, Windows NT 4.0, Windows 2000 e Windows XP. Contemporaneamente fu distribuito l'ambiente di sviluppo Visual Studio .NET.

### .NET Framework 1.1

Distribuito assieme a Visual Studio .NET 2003 e come aggiornamento a sé stante, venne integrato nativamente in Windows Server 2003.
Il .NET Framework 1.1 apportò diversi aggiornamenti e modifiche alla versione precedente:
* Integrazione di aggiornamenti di sicurezza e di correzioni di bug della versione precedente
* Diversi cambiamenti alle API
* Supporto per i controlli per dispositivi mobili in ASP.NET
* .NET Compact Framework - una versione del framework per dispositivi mobili
* Supporto integrato per database ODBC e Oracle
* Supporto al protocollo internet IPv6

### .NET Framework 2.0

Il .NET Framework 2.0 venne distribuito da Microsoft il 27 ottobre 2005 in concomitanza con l'uscita di Visual Studio 2005.
Questa versione è l'ultima con supporto a Windows 2000 e precedenti e può essere scaricata dal sito Microsoft.
Le novità sono numerose e includono:
* Ampliamento e revisione di diverse API
* Supporto alle architetture x64 (sia Intel che AMD)
* Una nuova API che permette maggiore controllo sul comportamento del programma, in particolare per quanto riguarda il multithreading, l'allocazione di memoria, il caricamento di assembly e altro
* Migliorie ai vari linguaggi .NET
* Nuovi controlli web e opzioni di personalizzazione per ASP.NET

### .NET Framework 3.0

Il .NET Framework 3.0, nome in codice WinFX, è stato introdotto da Microsoft con Windows Vista, in cui è fortemente integrato in quanto include una nuova gestione delle API di sistema. È comunque disponibile anche per Windows XP SP2/SP3 e Windows Server 2003.
Il .NET Framework 3.0 è incrementale rispetto alla versione 2.0: ciò significa che non comporta cambiamenti all'architettura di base e ne mantiene il Common Language Runtime, tuttavia apporta diverse migliorie e correzioni e quattro nuovi componenti
* Windows Presentation Foundation (nome in codice Avalon): un nuovo sottosistema grafico;
* Windows Communication Foundation (nome in codice Indigo): un sottosistema per creare applicazioni distribuite con supporto alla logica transazionale.
* Windows Workflow Foundation, per fornire alle applicazioni una tecnologia di progettazione, esecuzione ed amministrazione di diagrammi di flusso.
* Windows CardSpace, per fornire alle applicazioni un metasistema di identità dove gestire le password ed i dati riservati in generale, presentando poi i dati aggregati in una sorta di carta delle identità virtuali.

### .NET Framework 3.5

Il .NET Framework 3.5 è stato distribuito con l'ambiente di sviluppo Visual Studio 2008 il 19 novembre 2007. È ancora basato sul CLR della versione 2.0, ma ne integra il Service Pack 1, che aggiunge nuove proprietà e metodi, mantenendo la retrocompatibilità con le applicazioni scritte per la versione 2.0. È disponibile come componente aggiuntivo per Windows XP SP2, Windows Vista e Windows Server 2003 e 2008.
I cambiamenti principali comprendono:
* Migliorie ai linguaggi, in particolare a C# 3.0 e Visual Basic 9:
** Supporto al lambda calcolo e al metodo delle estensioni
** Tipi anonimi con inferenza statica
* Language Integrated Query (LINQ) che permette ai linguaggi .NET di effettuare queries di dati, con sintassi simile a quella dell'SQL
* Nuove funzionalità di rete
* Funzionalità AJAX ad ASP.NET

### .NET Framework 4.0

Il .NET Framework 4.0 è stato distribuito con l'ambiente di sviluppo Visual Studio 2010 il 12 aprile 2010.
I cambiamenti principali comprendono:
* Supporto aggiuntivo per gli standard di settore
* Nuovo supporto per applicazioni middle-tier
È disponibile come componente aggiuntivo per le seguenti versioni: Windows XP (SP2, SP3), Windows Server 2003 SP2, Windows Vista SP1 o versioni successive, Windows Server 2008 (non supportato nel ruolo componenti di base server), Windows 7, Windows Server 2008 R2/SP1 (non supportato nel ruolo componenti di base server).

### .NET Framework 4.5

Il .NET Framework 4.5 è stato distribuito con l'ambiente di sviluppo Visual Studio 2012 RC il 9 ottobre 2012.

### .NET Framework 4.5.1

Il .NET Framework 4.5.1 è stato distribuito con l'ambiente di sviluppo Visual Studio 2013 il 12 ottobre 2013.

### .NET Framework 4.5.2

Il .NET Framework 4.5.2 è stato distribuito il 6 maggio 2014.

### .NET Framework 4.6

Il .NET Framework 4.6 è stato distribuito il 15 ottobre 2015 sebbene sia incorporato nativamente nella prima versione (1507) di Windows 10.

### .NET Framework 4.6.1

Il .NET Framework 4.6.1 è stato distribuito il 17 novembre 2015.

### .NET Framework 4.6.2

Il .NET Framework 4.6.2 è stato distribuito il 20 luglio 2016.

### .NET Framework 4.7

Il .NET Framework 4.7 è stato distribuito inizialmente come parte del Windows 10 Creator Update nell'aprile 2017. Dal 2 maggio 2017 è disponibile per il prelevamento gratuito dal sito Microsoft per tutti i sistemi operativi supportati, ovvero: Windows 7 SP1, WIndows 8.1, Windows 10 Anniversary Update, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 e Windows Server 2016.
Gli aggiornamenti principali di questa versione comprendono:
* Supporto in Windows 10 a Windows form con elevato DPI
* Supporto touch screen in Windows 10 per applicazioni Windows WPF
* Supporto migliorato per crittografia (utilizzo della Crittografia Ellittica).
* Supporto a linguaggio C# versione 7 e VisualBasic versione 15, compreso il ValueTuple
* Supporto a .NET Standard versione 1.6
* Miglioramenti di prestazioni e affidabilità

### .NET Framework 4.7.1

Il .NET Framework 4.7.1 è stato distribuito inizialmente come parte del Windows 10 Fall Creator Update nell'ottobre 2017. Dal 13 ottobre 2017 è disponibile per il prelevamento gratuito dal sito Microsoft per tutti i sistemi operativi supportati, ovvero: Windows 7 SP1, WIndows 8.1, Windows 10 (Anniversary Update e Creator Update), Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 e Windows Server 2016.

### .NET Framework 4.7.2

Il .NET Framework 4.7.2 è stato distribuito inizialmente come parte del Windows 10 April 2018 Update nell'aprile 2018. Dal 30 aprile 2018 è disponibile per il prelevamento gratuito dal sito Microsoft per tutti i sistemi operativi supportati, ovvero: Windows 7 SP1, WIndows 8.1, Windows 10 (Anniversary Update, Creator Update e Fall Creators Update), Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 e Windows Server 2016.

### .NET Framework 4.8

Il .NET Framework 4.8 è stato distribuito inizialmente come parte del Windows 10 May 2019 Update nel maggio 2019. Dal 18 aprile 2019 è disponibile per il prelevamento gratuito dal sito Microsoft per tutti i sistemi operativi supportati, ovvero: Windows 7 SP1, WIndows 8.1, Windows 10 (Anniversary Update, Creator Update, Fall Creators Update e April 2018 Update), Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016 e Windows Server 2019.

### .NET Framework 4.8.1

Il .NET Framework 4.8.1 è stato distribuito con l'ambiente di sviluppo Visual Studio 2022 il 9 agosto 2022. È disponibile per il prelevamento gratuito dal sito Microsoft per tutti i sistemi operativi supportati, ovvero: Windows 10 (October 2020 Update, May 2021 Update, November 2021 Update e 2022 Update), Windows 11 e Windows Server 2022.