La nuova versione del .NET Framework è un passo molto importante perché oltre a contenere nuove tecnologie o migliorie, si può dire che si dà anche un po' una ripulita e una riorganizzazione visto che il framework era diventato un po' confuso quando dopo la versione 2.0 è stato aggiunta la 3.0 che era basata sempre sulla 2.0, poi allo stesso modo la 3.5 ed infine il service pack 1 che introduceva ancora novità.
Innanzitutto date un occhio al MetadataDiffViewer che l'ho aggiornato alla versione 4.0 così non si perde nessuna novità. Innanzitutto gli assembly sono tutti 4.0 e balzano all'occhio alcuni come System.Web.Routing o System.Web.Abstractions che esistono ancora, ma non contengono classi. Questo perché le loro classi sono state trasferite, come giusto che sia, nell'assembly System.Web. Attraverso i due attributi TypeForwardedToAttribute (presente già dalla versione 2.0) e TypeForwaredFromAttribute si indica a compilatori, CLR e serializzatori vari di redirigere dalla vecchia posizione a quella nuova. In questo modo le applicazioni compilate per il 3.5 SP1 vengono rediretti alla nuova versione 4.0. Le nuove applicazioni invece verranno compilate con la referenza corretta.
Oltre alle novità più importanti ho trovato qualcosa di interessante:
- una classe System.AggregateException per raggruppare più eccezioni;
- il nuovo namespace System.Collections.Concurrent contenente Queue, Dictionary e Stack già sincronizzate e quindi thread safe. Molto interessante la classe Partitioner per creare enumerazioni che smistano automaticamente il carico di lavoro tra più consumer che ne fanno richiesta;
- il nuovo namespace System.Diagnostics.Contracts che contiene in particolare la classe Contract per indicare nel codice verifiche da effettuare in fase di compilazione e/o a runtime all'inizio o alla fine di una funzione (ne parlerò in dettaglio con un altro post);
- le classi relative a PLINQ, a ParallelFX, lock ottimizzati come: Task, Parallel, SpinLock, ecc.
- le classi Tuple
/t1,...tn> usate da F# però quante volte può servire memorizzare delle informazioni in modo veloce senza creare una classe con proprietà apposite; - il nuovo namespace e assembly System.ComponentModel.Composition che contiene tutta la parte di Managed Extensibility Framework;
- in System.Core tante nuove Action
/t1,> e Func /t1,> :-) Per la parte di expression e delle query LINQ ci sono alcune nuove classi Expression che permettono di fare degli statement: GotoExpression, LoopExpression, SwitchExpression, TryExpression, ecc. Un bellissimo ExpressionVisitor per sfogliare un'espressione: ci voleva!; - i nuovi assembly. System.Web.DataVisualization e System.Windows.Forms.DataVisualization contenente i controlli di charting per web e windows.
E questo è solo l'inizio, che bello che bello, tante cose nuove :-)
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Prestazioni delle query LINQ in architetture complesse, il 30 maggio 2011 alle 11:39
- Inside ModelVirtualCasting #5: i servizi, il 7 giugno 2010 alle 17:58
- Quando usare gli optional parameter di C# 4, il 28 aprile 2010 alle 20:14
- Routing alla massima potenza, il 7 aprile 2010 alle 08:24
- Open Data Protocol e WCF Data Services, il 2 aprile 2010 alle 15:58
- .NET Framework 4.0 beta 1: Tuple, il 27 maggio 2009 alle 06:00