Novidades do .Net 4.0

2,052 views

Published on

Novidades do .Net 4 Community Launch SP 2010

Published in: Technology
  • Be the first to comment

Novidades do .Net 4.0

  1. 1. .Net 4.0 Giovanni Bassi [email_address] unplugged.giggio.net scrumdev.com.br @giovannibassi Consultor Independente
  2. 3. Agenda
  3. 4. CLR versus .NET Framework .NET 1.0 .NET 1.1 .NET 2.0 3.0 3.5 .NET 4 2002 2003 2008 CTP 2005-08 CLR 1.0 CLR 1.1 CLR 2.0 CLR 4 SP1
  4. 5. O .NET Framework WPF Win Forms DLR ASP.NET WCF E mais! LINQ Base Class Libraries The CLR JIT & NGEN Garbage Collector Security Model Exception Handling Loader & Binder
  5. 6. Os pilares Parallel Computing Task Parallel Library Parallel LINQ Data Access Entity Framework 4 Data Services 1.5 Runtime DLR Integration Type Equivalence In-Process SxS
  6. 7. Compatibilidade do .NET Framework <ul><li>O .NET 4.0 é uma release muito compatível com as versões anteriores </li></ul><ul><li>O .NET 4.0 não é automaticamente utilizado por aplicações legadas </li></ul><ul><ul><li>Você precisa acrescentar uma configuração para dizer que quer rodar no CLR 4.0 com uma aplicação compilada com 3.5 </li></ul></ul>
  7. 8. .NET Framework Compatibility <ul><ul><li>Mas… se o 4.0 é compatível, porque não rodar aplicações 3.5 automaticamente no 4.0? </li></ul></ul><ul><ul><li>O melhor a fazer é sempre rodar na versão em que sua aplicação foi compilada </li></ul></ul>
  8. 9. CLR 2 – Rodando lado a lado Host Process (i.e. Outlook) 1.1 add-in .NET 1.1 .NET 2.0 2.0 add-in 3.0 3.5 3.0 add-in 3.5 add-in
  9. 10. .NET 2.0 2.0 add-in 3.0 3.5 Host Process (i.e. Outlook) 3.0 add-in 3.5 add-in .NET 4.0 4.0 add-in
  10. 11. Web Forms 4 - Client ID <ul><li>Resulting Client IDs: </li></ul><ul><li>ctl00 </li></ul><ul><li>ctl00_HeaderForm </li></ul><ul><li>ctl00_HeaderForm_States </li></ul>1) User Control (No ID) 2) User Control (“HeaderForm”) 3) Drop Down List (“States”)
  11. 12. Web Forms 4 - Routing ASP.NET Routing Route: Product/{name} -> Product.aspx WebForms Page File Name: Product.aspx Route Values: Name = “Bikes” Request: Products/Bikes Response
  12. 14. WPF 4 <ul><li>Novos controles </li></ul><ul><ul><li>Data Grid, </li></ul></ul><ul><ul><li>Calendar </li></ul></ul><ul><ul><li>Datepicker </li></ul></ul><ul><li>Ribbon </li></ul><ul><li>Multi-Touch </li></ul><ul><li>Suporte ao Windows 7 </li></ul>
  13. 15. Managed Extensibility Framework? <ul><li>O Managed Extensibility Framework (MEF) é uma nova biblioteca no .NET Framework que habilita maior reuso de aplicações e componentes. Usando MEF, aplicações .NET podem mudar de estaticamente compiladas para dinamente compostas </li></ul>
  14. 16. Open/Closed Principle <ul><li>Software entities should be </li></ul><ul><li>open for extension , </li></ul><ul><li>but closed for modification . </li></ul>
  15. 17. <ul><li>Conhecido vs. Des conhecido </li></ul>
  16. 19. Code Contracts <ul><li>Melhora os testes </li></ul><ul><li>Analizador </li></ul><ul><ul><li>Estático </li></ul></ul><ul><ul><li>Dinâmico </li></ul></ul><ul><li>Melhora documentação </li></ul><ul><li>System.Diagnostics.Contracts </li></ul><ul><li>Compilado condicionalmente </li></ul><ul><li>Qualquer linguagem </li></ul><ul><li>Precisa de um Add-in para funcionalidade completa </li></ul><ul><li>PEX é um excelente complemento </li></ul>
  17. 20. Ferramental: 2 Edições <ul><li>Standard edition </li></ul><ul><ul><li>Qualquer versão do Visual Studio 2008 ou 2010 </li></ul></ul><ul><li>Premium edition </li></ul><ul><ul><li>Visual Studio 2008 Team System, Visual Studio 2010 Premium Edition, or Visual Studio 2010 Ultimate Edition </li></ul></ul><ul><ul><li>Inclui o static checker </li></ul></ul>
  18. 21. Code Contracts
  19. 23. Entity Framework 4 <ul><li>Model-First </li></ul><ul><li>POCO </li></ul><ul><li>Lazy Loading </li></ul><ul><li>Foreign Keys </li></ul>
  20. 25. Muitas novidades no WF/WCF 4 <ul><li>O padrão agora é criar workflows com apenas o XAML </li></ul><ul><ul><li>Modelo unificado entre WF, WCF, and WPF </li></ul></ul><ul><li>Mais atividades de workflow na biblioteca </li></ul><ul><li>Modelo de programação simplificado no WF </li></ul><ul><li>Melhor integração com WCF </li></ul><ul><li>Melhorias no designer </li></ul><ul><li>Descoberta de serviços no WCF </li></ul><ul><li>Hospedagem e gerenciamento com Windows App Fabric (antigo “Dublin”) </li></ul>
  21. 26. WCF <ul><li>OData! </li></ul><ul><li>Total de linhas </li></ul><ul><li>Paginação no servidor </li></ul><ul><li>BLOB streams </li></ul><ul><li>Data binding com WPF/SL </li></ul>ADO.NET Data Services 1.5
  22. 28. A iniciativa de computação paralela <ul><li>Permitir aos desenvolvedores mais brilhantes resolver problemas de negócio , não problemas de concorrência. </li></ul><ul><li>” Concurrência para o povo” </li></ul>
  23. 29. Computação paralela com .NET 4 <ul><li>Task Parallel Library (TPL) </li></ul><ul><li>Parallel LINQ (PLINQ) </li></ul><ul><li>Data Structures for Parallel Programming </li></ul>
  24. 30. Parallel LINQ <ul><li>Parallel LINQ (PLINQ) nos permite utilizar facilmente todo o poder de múltiplos núcleos com um impacto mínimo no LINQ que já usamos </li></ul>var q = from p in people          where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd         orderby p.Year ascending          select p;
  25. 32. Porque a DLR? Common Language Runtime Estaticamente tipados C# VB Ruby Python Dinamicamente tipados
  26. 33. Porque a DLR? Common Language Runtime Statically-Typed C# VB Ruby Python Dynamically-Typed Dynamic Language Runtime Estaticamente tipados Dinamicamente tipados
  27. 34. Python Binder Ruby Binder COM Binder JScript Binder Object Binder Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching IronPython IronRuby C# VB.NET Others… .NET Dynamic Programming
  28. 35. Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember( &quot;Add&quot; , BindingFlags.InvokeMethod, null , new object [] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke( &quot;Add&quot; , 10, 20); int sum = Convert .ToInt32(res); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Statically typed to be dynamic Dynamic method invocation Dynamic conversion Dynamically Typed Objects
  29. 37. Equivalência de tipos <ul><li>Assemblies de Interop fazem a tradução entre código gerenciado e COM </li></ul><ul><li>Para cada interface, struct, enum, </li></ul><ul><li>delegate, e member, existe um </li></ul><ul><li>equivalente gerenciado com dados de marshalling </li></ul>
  30. 38. No entanto… <ul><li>Primary Interop Assemblies causam muita dor de cabeça … </li></ul>
  31. 39. Morra, PIA, morra! <ul><li>Compiladores introduzem nos assemblies da aplicação somente as porções dos assemblies de interop que estamos realmente utilizando </li></ul><ul><li>O CLR garante que as definições introduzidas desses tipos são efetivamente equivalentes </li></ul>
  32. 41. <ul><li>http://tinyurl.com/vs2010trainingkit </li></ul>Training Kit do Visual Studio 2010
  33. 42. Links <ul><li>What’s new in .Net 4 tinyurl.com/newdotnet4 </li></ul><ul><li>Blog do time do Base Class Library blogs.msdn.com/bclteam </li></ul><ul><li>Code contracts no dev labs: tinyurl.com/contratoscodigo </li></ul><ul><li>Pex no Microsoft Research: research.microsoft.com/en-us/projects/pex/ </li></ul>
  34. 44. Giovanni Bassi [email_address] unplugged.giggio.net scrumdev.com.br @giovannibassi

×