27

Net 4.0 Preview @ UGIdotNet

Embed Size (px)

DESCRIPTION

.Net 4.0 Preview @ UGIdotNet

Citation preview

  • 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 [email protected]

2. Agenda Visual Studio 2010 C# & VB.Net Framework 4.0 3. Certo non c Linq, ma... Nuovo ambiente di sviluppo; Nuovo TFS; +296 classi; Nuovo CLR, con tanto di supporto perlhosting side-by-side; Nuovo linguaggio: F# 4. ...e poi Nuove versioni per:Wpf, Wcf, Wf, Asp.net, Entity Framework epure per il defunto Linq2Sql; Nuovi attori: Parallel Library e Plinq, CodeContracts; Integrazione/diffusione di xaml e... morte dixoml; Nuove feature per i vecchi linguaggi; Nuovi strumenti di refactoring; Nuovi designer; 5. Visual Studio 2010 Multi-targeting: 2.0 -> 4.0; Nuovi strumenti di Refactoring orientatianche al TDD; Nuovi designer; Sequence Diagram; Layer Diagram e Architecture Explorer Code dependencies; Commenti nel debugger; Historical Debugger; Post-mortem debug; 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 gliadd-in; Cider, lintellisense per xaml e la nuovaPropertyGrid; Wpf Tree Visualizer; 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 dellIDE rivoluzionaria; 8. Visual Studio 2010 a first look 9. C# vs VB... new stuffOptional and Named Multiline Lambdas; Parameters Implicit Line Continuation; Auto-implementedSafe Co- & Contra- Properties; variance Collection Initializers;Dynamically Typed Array Literals; Objects Nullable OptionalParameters;Improved COM Co- & Contra-variance Interoperability Interop with DynamicLanguages Compiling without PIAs;C#VB.Net 10. Optional and NamedParameters Vale anche per i metodi; IMVHO viola lincapsulamento; 11. Co-varianceFx 2.0Fx 4.0 12. Contra-varianceFx 2.0Fx 4.0 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. Dynamically Typed Objects Il DLR supporta la creazione di oggettiC# no; Non sono supportati gli extensionmethods; Non possono essere usati comeparametri di una chiamata oggettiExpression; 15. Dynamically Typed Objects 16. COM Interop news La firma delle API COM passa da Objecta dynamic: ((Excel.Range)excel.Cells[1, 1]).Value; excel.Cells[1, 1].Value; No-PIA: A runtime le informazionipresenti, e necessarie a design-time, vengono inglobate dalcompilatore, quindi le/i PIA non vengonopi caricati; No-ref: COM ref != C# ref -> diventa oneredel compilatore generare le variabilitemporanee da passare by reference; 17. Framework Hosting API; Code Contracts & PEX; Parallel Library; TreadPool; 18. Hosting API2.0 3.0 3.54.0 add-inadd-inadd-in add-in3.53.0 .NET 4.0.NET 2.0 Processo Host 19. Code Contracts Sintassi per esplicitare i requisiti sui dati; Requires(); RequiresAlways(); Static Checker: controllo a compile time; (a parte per laB1, http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx) Possibilit di fornire i contratti separati; Contract Invariance; 20. Code ContractsPre condizionipublic MyMethod( String argument ){Contract.Requires( argument != null );}Post condizioni public string GetValue() { Contract.Ensures( Contract.Result() != null ); return something; } 21. PEX Add-in per Visual Studio (anche 2008?) Genera un set mirato di unit-tests; Pu sfruttare Code Contracts; 22. Multi-Core/Threading/Task... Lhardware ha preso la sua strada; Scrivere software che sfrutti pi core unoperazione complessa, troppo;Il focus del developer deve essere sul problema e non sullinfrastruttura che serve per risolvere il problema; 23. I nuovi attori Parallel LINQ (aka PLinq) Task Parallel Library: Task, Task 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. AsParallel is the word var q = from p in people.AsParallel()where p.Name == query.Name &&p.State == query.State &&p.Year >= yearStart &&p.Year