Nuove funzionalità e miglioramenti in .Net Framework 4.5

Microsoft .Net Framework è maturato molto negli ultimi anni. Nuove funzionalità e miglioramenti sono stati introdotti in abbondanza per ottimizzarlo e renderlo veloce, sicuro, più stabile e ad alte prestazioni. In questo articolo vorrei presentare una panoramica dei miglioramenti significativi in ​​.Net Framework 4.5.x.

Le temute eccezioni di Out of Memory

Questo è un errore temuto e può diventare un incubo per te. Le eccezioni di memoria esaurita possono interrompere il flusso di controllo dell'applicazione anche quando è installata una quantità di memoria fisica sufficiente. Stai scherzando? Non c'è modo! Lascia che ti spieghi perché questo può verificarsi e come questo problema è stato risolto in .Net Framework 4.5.

Gli oggetti creati dall'ambiente gestito vengono archiviati nell'heap. In un periodo di tempo l'heap può diventare frammentato a causa della creazione e rimozione di oggetti. La frammentazione si riferisce ai buchi di memoria (memoria libera) che sono sparsi. In tal caso, si osserveranno spesso eccezioni di Memoria insufficiente se l'applicazione utilizza una grande quantità di memoria e perché il runtime non sarebbe in grado di allocare spazio quando e se necessario anche se potrebbe esserci spazio disponibile.

Suona strano? Ebbene, la somma dei buchi di memoria può essere sufficiente per questa richiesta, ma poiché questi buchi di memoria sono sparsi, il runtime non può utilizzarli.

Compattazione di heap di oggetti di grandi dimensioni su richiesta

La compattazione dell'heap di oggetti di grandi dimensioni su richiesta è stata introdotta di recente per compattare l'heap ed eliminare la frammentazione dell'heap. La compattazione implica la compattazione di tutti questi buchi di memoria sparsi in un unico blocco. Questa funzionalità è disponibile (solo su richiesta) da .Net Framework 4.5.1 per mitigare i problemi di eccezione di memoria insufficiente. Per abilitare questa funzionalità, è necessario impostare la proprietà LargeObjectHeapCompactionMode.

Per inciso, questa proprietà può avere uno dei due valori: Default e CompactOnce. Il primo se impostato ignorerebbe la compattazione dell'heap di oggetti di grandi dimensioni durante un ciclo GC. Se si utilizza quest'ultimo, l'heap di oggetti di grandi dimensioni verrà compattato durante il ciclo successivo.

Supporto per la resilienza della connessione ADO.Net

Non è più necessario scrivere codice per implementare la resilienza della connessione per stabilire connessioni inattive o interrotte. .Net Framework 4.5.1 viene fornito con questa funzionalità integrata per ricreare connessioni interrotte al database.

Tempo di avvio migliorato: ottimizzazione del profilo

L'ottimizzazione del profilo è una funzionalità introdotta in .Net Framework 4.5 che riduce al minimo il tempo di avvio dell'applicazione. Come funziona? Un profilo è un file che contiene i metodi necessari all'applicazione al momento dell'avvio. All'avvio dell'applicazione, il Just in Time Compiler (JIT) viene eseguito in un thread in background e su più processori per generare codice nativo dal codice IL.

Miglioramenti alla Garbage Collection: introduzione di Server GC

L'ambiente gestito di .Net utilizza la garbage collection per ripulire oggetti inutilizzati o non referenziati, oggetti che non sono più necessari. Nelle versioni precedenti di .Net Framework, il GC sospendeva i thread dell'applicazione quando era occupato a ripulire la memoria. Si trattava di un grave collo di bottiglia delle prestazioni in quanto la tua applicazione doveva attendere che il GC finisse il suo lavoro.

Con .Net Framework 4.5 questo non è più un problema; Il server GC è stato recentemente introdotto per facilitare la pulizia degli oggetti di seconda generazione utilizzando un thread in background e, quindi, ridurre al minimo il carico sul thread GC principale poiché i thread dell'applicazione sono sospesi molto meno frequentemente. Con .Net Framework 4.5, la garbage collection in background è supportata sia nel server che nel GC della workstation. Ora è supportata anche la garbage collection simultanea; un thread dedicato esegue la garbage collection quando necessario.

Notevoli miglioramenti in .Net Framework 4.5.2

Microsoft ha rilasciato di recente .Net Framework 4.5.2. Il rilascio è stato annunciato da Microsoft nel blog .Net Framework. Ecco il link: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Oltre ai miglioramenti nella profilazione e nel debug, ci sono notevoli miglioramenti in ASP.Net in .Net Framework 4.5.2. È ora possibile utilizzare i metodi HostingEnvironment.QueueBackgroundWorkItem per pianificare piccole attività in background in modo asincrono. Per esaminare e modificare le intestazioni di risposta e i codici di risposta, è possibile utilizzare i metodi HttpResponse.AddOnSendingHeaders e HttpResponseBase.AddOnSendingHeaders. Puoi fare riferimento a questo articolo MSDN per ulteriori letture: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Cosa succederà dopo?

Microsoft ha rilasciato una versione di anteprima di .Net Framework 4.6 lo scorso novembre. È possibile scaricare una copia di .Net Framework 4.6 da qui: //www.microsoft.com/en-us/download/details.aspx?id=44928

Il gigante del software ha anche annunciato che revocherà il supporto per le versioni di .Net Framework dalla 4.x alla 4.5.1 dopo gennaio 2016. Ulteriori informazioni su questo argomento qui: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx