.Net 4.0 Preview @ UGIdotNet

441 views
380 views

Published on

.Net 4.0 Preview @ UGIdotNet

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
441
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

.Net 4.0 Preview @ UGIdotNet

  1. 1. .NET 4.0 Previewda VS10 a C# 4.0 Mauro Servienti Microsoft MVP - Visual C# Software Mason @ Managed Designs http://blogs.ugidotnet.org/topics mauro.servienti@manageddesigns.it
  2. 2. Agenda Visual Studio 2010 C# & VB.Net Framework 4.0
  3. 3. Certo non c’è “Linq”, ma... Nuovo ambiente di sviluppo; Nuovo TFS; +296 classi; Nuovo CLR, con tanto di supporto per l’hosting side-by-side; Nuovo linguaggio: F#
  4. 4. ...e poi Nuove versioni per: Wpf, Wcf, Wf, Asp.net, Entity Framework e pure per il “defunto” Linq2Sql; Nuovi attori: Parallel Library e Plinq, Code Contracts; Integrazione/diffusione di xaml e... morte di xoml; Nuove feature per i “vecchi” linguaggi; Nuovi strumenti di refactoring; Nuovi designer;
  5. 5. Visual Studio 2010 Multi-targeting: 2.0 -> 4.0; Nuovi strumenti di Refactoring orientati anche al TDD; Nuovi designer;  Sequence Diagram;  Layer Diagram e Architecture Explorer Code dependencies; Commenti nel debugger; Historical Debugger; Post-mortem debug;
  6. 6. Visual Studio 2010 Code Hierarchy; Nuova dialog Choose Toolbox Items:  Filtri, suddivisa in categorie, sempre lenta... Wpf, wpf, wfp e ancora wpf;  IDE “quasi” completamente riscritto in wpf;  “Piena” retrocompatibilità con i package e gli add-in;  “Cider”, l’intellisense per xaml e la nuova PropertyGrid;  Wpf Tree Visualizer;
  7. 7. Visual Studio 2010 Web.config transformation;  Solo per deploy  Solo per “Web”... Forse... ○ Usa MS Build MEF & Extensions  Microsoft Extensibility Framework != IoC  Nuovo Extension Manager  “Pluggabilità” dell’IDE rivoluzionaria;
  8. 8. Visual Studio 2010 a first look
  9. 9. C# vs VB... new stuff Optional and Named  Multiline Lambdas; Parameters  Implicit Line Continuation;  Auto-implemented Safe Co- & Contra- Properties; variance  Collection Initializers; Dynamically Typed  Array Literals; Objects  Nullable Optional Parameters; Improved COM  Co- & Contra-variance Interoperability  Interop with Dynamic Languages  Compiling without PIAs;C# VB.Net
  10. 10. Optional and NamedParameters Vale anche per i metodi; IMVHO viola l’incapsulamento;
  11. 11. Co-variance Fx 2.0 Fx 4.0
  12. 12. Contra-varianceFx 2.0 Fx 4.0
  13. 13. Dynamically Typed Objects Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20);
  14. 14. Dynamically Typed Objects Il DLR supporta la creazione di oggetti C# no; Non sono supportati gli extension methods; Non possono essere usati come parametri di una chiamata oggetti Expression;
  15. 15. Dynamically Typed Objects
  16. 16. COM Interop news La firma delle API COM passa da Object a dynamic:  ((Excel.Range)excel.Cells[1, 1]).Value;  excel.Cells[1, 1].Value; No-PIA: A runtime le informazioni presenti, e necessarie a design- time, vengono inglobate dal compilatore, quindi le/i PIA non vengono più caricati; No-ref: COM ref != C# ref -> diventa onere del compilatore generare le variabili temporanee da passare “by reference”;
  17. 17. Framework Hosting API; Code Contracts & PEX; Parallel Library; TreadPool;
  18. 18. Hosting API 2.0 3.0 3.5 4.0 add-in add-in add-in add-in 3.5 3.0 .NET 4.0 .NET 2.0 Processo Host
  19. 19. Code Contracts Sintassi per esplicitare i requisiti sui dati;  Requires();  RequiresAlways(); Static Checker: controllo a compile time;  (a parte per la B1, http://msdn.microsoft.com/en- us/devlabs/dd491992.aspx) Possibilità di fornire i contratti separati; Contract Invariance;
  20. 20. Code ContractsPre condizioni public MyMethod( String argument ) { Contract.Requires( argument != null ); … }Post condizioni public string GetValue() { Contract.Ensures( Contract.Result<String>() != null ); … return something; }
  21. 21. PEX Add-in per Visual Studio (anche 2008?) Genera un set mirato di unit-tests; Può sfruttare Code Contracts;
  22. 22. Multi-Core/Threading/Task... L’hardware ha preso la sua strada; Scrivere software che sfrutti più core è un’operazione complessa, troppo; Il focus del developer deve essere sul problema e non sull’infrastruttura che serve per risolvere il problema;
  23. 23. I nuovi attori Parallel LINQ (aka PLinq) Task Parallel Library:  Task, Task<T>  Parallel.For, Parallel.ForEach  Parallel.Invoke Coordination Data Structures:  System.Collections.Concurrent  Primitive per la sincronizzazione ○ Barrier, CountdownEvent, etc. Unified Cancellation Model:  CancelationToken, CancelationTokenSource;
  24. 24. AsParallel is the word <cit.> var q = from p in people.AsParallel() where p.Name == query.Name && p.State == query.State && p.Year >= yearStart && p.Year <= yearEnd orderby p.Year ascending select p;

×