Visual Studio 2010 e C# 4

2,274 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
2,274
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
80
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide
  • A primeira versão foi lançada em 2002, para Windows 98, Me, NT 4.0, 2000, and XP;A versão 1.1foi a primeiragrandeatualização da plataforma, lançadaemconjunto com o Visual Studio 2003, e jáfazendo parte do Windows Server 2003. Inúmerasmodificações, inclusive lançamento de umaversãoparadispositivospequenos, o .NET Compact Framework.A versão 2.0 foilançadaem 2005/2006, junto com SQL Server 2005, Biztalk 2006, etc. - Novo CLR - Generics - Temas, skins, webparts - classes parciais, métodosanonimos, etcA versão 3.0 funcionamaiscomoumaatualização, semgrandesmudançasarquiteturais, utilziando o CLR passado. (novembro 2006) - WPF - WCF - WF - Windows CardspaceVersão 3.5: Novembro de 2007 - LINQ - Métodos de extensão - ASP.NET AJAX juntoSP1 do 3.5: Agosto 2008 - Entity Framework - ADO.NET Data Services - ASP.NET MVC4.0: Anuncio em setembro 2008Public Beta em maio 2009ParallelLinguagens DinâmicasCode ContractsOsloFevereiro de 2010: RC
  • Expression trees – árvores de expressões Dynamic Dispatch – resolução de métodos em tempo de execução, utiliza cache de chamadas se houberSite Caching – cache das chamadas
  • Diferença entre dynamic e varVar é conhecido em tempo de compilaçãoDynamic é como o tipo object, resolvido somente em runtimeCuidado com uso excessivo de dynamic – ele cauxa box e unboxing, ou seja muito overhead no processador
  • If you would like to host your demo on the Virtual Server, please use the myVPC demo slide, not this slide.
  • Mostrar Debug Windows Parallel – break point
  • If you would like to host your demo on the Virtual Server, please use the myVPC demo slide, not this slide.
  • Mostrar Debug Windows Parallel – break point
  • Mostrar Debug Windows Parallel – break point
  • Mostrar Debug Windows Parallel – break point
  • Visual Studio 2010 e C# 4

    1. 1. Visual Studio 2010 e C# 4.0<br />Carlos dos Santos<br />cds@cds-software.com.br<br />Blog: www.carloscds.net<br />Twitter: @cdssoftware<br />Microsoft MVP C#<br />CDS Informática Ltda. <br />Microsoft Gold Certified Partner <br />Microsoft Visual Studio Team System Inner Circle Partner<br />
    2. 2. Agenda<br />Um pouco de história...<br />Novidades do Visual Studio 2010<br />ObjetosTipadosDinamicamente<br />ParâmetrosOpcionais e Nomeados<br />Programação Paralela<br />Entity Framework 4<br />WPF<br />Silverlight<br />
    3. 3. Um pouco de história…<br />SP1<br />3.5<br />3.0<br />.NET 1.0<br />.NET 1.1<br />.NET 2.0<br />.NET 4<br />200213 de Fevereiro<br />2003<br />3 de Abril<br />2008 CTP<br />2005-08<br />CLR 1.0<br />CLR 1.1<br />CLR 2.0<br />CLR 4<br />
    4. 4. O que é a plataforma .Net<br />WPF<br />Win Forms<br />DLR<br />ASP.NET<br />WCF<br />E muito mais!<br />LINQ<br />Base Class Libraries<br />CLR<br />JIT & NGEN<br />Garbage Collector<br />Security Model<br />Exception Handling<br />Loader & Binder<br />
    5. 5. Quais são as novidades?<br />Breakpoint Grouping<br />Visual Enhancements<br />Dynamic Data Tooling<br />WPF-based Editor<br />Breakpoint Labeling<br />Call Hierarchy<br />Improved WPF Tooling<br />Historical Debugging<br />Inline Call Tree<br />Quick Search<br />Concurrency Profiler<br />Breakpoint Import/Export<br />Document Map Margin<br />Parallel Stacks Window<br />Improved Multi-Monitor<br />Parallel Tasks Window<br />Extensible Test Runner<br />Generate From Usage<br />Highlight References<br />Click-Once Enchacements for Office<br />Web Deploy<br />SharePoint Tooling<br />Minidump Debugging<br />JQueryIntellisense<br />64-bit Mixed-Mode<br />HTML Snippets<br />Web.config Transformation<br />Code Contracts<br />Parallel Extensions<br />BigInteger<br />Variance Annotations<br />Tuples<br />DLR<br />SortedSet<br />F#<br />Memory Mapped Files<br />Registry Improvements<br /><ul><li>Globalization data updated to unicode 5.1
    6. 6. Resource Managed Improvements
    7. 7. Compression Improvements
    8. 8. PLINQ
    9. 9. Parallel Task
    10. 10. Velocity
    11. 11. WCF4
    12. 12. WF4
    13. 13. WPF4
    14. 14. ADO.NET Data Services 1.5
    15. 15. ASP.NET Ajax 4.0
    16. 16. ASP.NET MVC
    17. 17. ASP.NET WebForms 4.0
    18. 18. CLR4
    19. 19. C# 4.0
    20. 20. VB10
    21. 21. MEF
    22. 22. Entity Framework 4.0
    23. 23. MEF</li></li></ul><li>ProgramaçãoDinâmica .NET<br />IronPython<br />IronRuby<br />C#<br />VB.NET<br />Outros…<br />Dynamic Language Runtime<br />Expression Trees<br />Dynamic Dispatch<br />Call Site Caching<br />PythonBinder<br />RubyBinder<br />COMBinder<br />JavaScriptBinder<br />ObjectBinder<br />
    24. 24. Entendendo o Dynamic<br />Tipossão “estaticamentetipadoscomodinâmicos”<br />Tipo dinâmicos são System.Object (cuidado com boxing e unboxing)<br />Tipos dinâmicos se propagam nas chamadas<br />Tipo dinâmicos não possuem checagem em tempo de compilação e nem Intelisence<br />
    25. 25. Como o Dynamic funciona:<br />CLR<br />COM Binder<br />Expression Tree<br />IronPython Binder<br />Exe<br />Compile<br />Run<br />Bind call<br />C# Runtime Binder<br />Dynamic Call<br />Delegate<br />DLR<br />Cache<br />…<br />
    26. 26. ObjetosTipadosDinamicamente<br />Calculator calc = GetCalculator();<br />int sum = calc.Add(10, 20);<br />object calc = GetCalculator();<br />TypecalcType = calc.GetType();<br />object res = calcType.InvokeMember("Add",<br />BindingFlags.InvokeMethod, null,<br />newobject[] { 10, 20 });<br />int sum = Convert.ToInt32(res);<br />ScriptObject calc = GetCalculator();<br />object res = calc.Invoke("Add", 10, 20);<br />int sum = Convert.ToInt32(res);<br />Estaticamentetipadocomodinâmico<br />dynamic calc = GetCalculator();<br />int sum = calc.Add(10, 20);<br />Invocaçãodinâmica de método<br />Conversãodinâmica<br />
    27. 27. ObjetosTipadosDinamicamente<br />Tipoem tempo de compilação:dynamic<br />Tipoem tempo de execução:System.Int32<br />dynamic x = 1;<br />dynamic y = "Hello";<br />dynamic z = newList<int> { 1, 2, 3 };<br />Quandooperandossãodynamic…<br /><ul><li>Seleção do membroadiadopara tempo de execução
    28. 28. Em tempo de execução, ostipossãosubtituídos
    29. 29. O tipoestáticoresultantedaoperação é dynamic</li></li></ul><li>ObjetosTipadosDinamicamente<br />public static class Math<br />{<br /> publicstaticdecimal Abs(decimal value);<br /> publicstaticdouble Abs(double value);<br /> publicstaticfloat Abs(float value);<br /> publicstaticint Abs(int value);<br /> publicstaticlong Abs(long value);<br /> publicstaticsbyte Abs(sbyte value);<br /> publicstaticshort Abs(short value);<br /> ...<br />}<br />Métodoescolhidoem tempo de compilação: double Abs(double x)<br />double x = 1.75;<br />double y = Math.Abs(x);<br />Métodoescolhidoem tempo de execução: double Abs(double x)<br />dynamic x = 1.75;<br />dynamic y = Math.Abs(x);<br />Métodoescolhidoem tempo de execução:int Abs(int x)<br />dynamic x = 2;<br />dynamic y = Math.Abs(x);<br />
    30. 30. ObjetosTipadosDinamicamente<br />demo<br />
    31. 31. ParâmetrosOpcionais e Nomeados<br />Método principal<br />publicStreamReaderOpenTextFile(<br /> string path,<br /> Encodingencoding,<br />booldetectEncoding,<br />intbufferSize);<br />Overloads secundários<br />publicStreamReaderOpenTextFile(<br /> string path,<br /> Encodingencoding,<br />booldetectEncoding);<br />publicStreamReaderOpenTextFile(<br /> string path,<br /> Encodingencoding);<br />publicStreamReaderOpenTextFile(<br /> string path);<br />Chama o método principal com valores default<br />
    32. 32. ParâmetrosOpcionais e Nomeados<br />Parâmetrosopcionais<br />publicStreamReaderOpenTextFile(<br /> string path,<br /> Encodingencoding,<br />booldetectEncoding,<br />intbufferSize);<br />publicStreamReaderOpenTextFile(<br /> string path,<br /> Encodingencoding = null,<br />booldetectEncoding = true,<br />intbufferSize = 1024);<br />Argumentonomeado<br />OpenTextFile("foo.txt", Encoding.UTF8);<br />OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096);<br />Argumentosavaliadosnaordemescrita<br />Argumentosnomeadospodemapareceremqualquerordem<br />Argumentosnomeadosdevemvirporúltimo<br />OpenTextFile(<br />bufferSize: 4096,<br /> path: "foo.txt",<br />detectEncoding: false);<br />Argumentosnão-opcionais DEVEM ser especificados<br />
    33. 33. Programação Paralela<br />Aproveitar a capacidade dos processadores com váriosnúcleos<br />Suporte do .Net Framework 4.0:<br />Parallel For / ForEach<br />Task Parallel Library (TPL)<br />System.Threading<br />System.Treading.Task<br />Parallel Linq (PLINQ)<br />Estururas de dados em: <br />System.Collections.Concurrent<br />
    34. 34. Programação Paralela<br />demo<br />
    35. 35. Programação Orientada a Teste (TDD)<br />Escrevaos testes antes do código<br />Aprovar, Refactorizar<br />Ajuda do Intellisense<br />Geração do Código da Classe<br />Geração dos Metodos<br />
    36. 36. Test Driven Development<br />demo<br />
    37. 37. Entity Framework 4<br />ADO.NET API<br />ORM API<br />Entity Provider<br />Connection<br />ObjectContext<br />Command<br />ObjectQuery<br />ModeloConceitual<br />DataReader<br />Mapeamento<br />ModeloFísico<br />SQL Provider<br />Oracle Provider<br />...<br />
    38. 38. ADO.NET x Entity Framework<br />Entity Framework<br />ADO.Net<br />
    39. 39. Entity Framework 4.0<br />Ferramenta de designer melhorada (VS2010)<br />Maiscontrole e flexibilidade;<br />POCO (Plan Old CLR Objects - persistence Ignorance);<br />Desenvolvimento N-Tier (emcamadas);<br />Lazy Loading (dados carregadospordemanda);<br />
    40. 40. Entity Framework 4<br />demo<br />
    41. 41. WPF <br />Desenvolvaaplicações com visual incrível<br />Total liberdadepara o designer<br />Integração entre o designer e o desenvolvedor<br />Ferramentasespecíficaspara o designer: Expression Blend<br />Visual criadousando XAML<br />
    42. 42. WPF<br />demo<br />
    43. 43. Silverlight<br />Aplicações web com visual incrível<br />Poder do XAML aplicado a web<br />Smooth Streaming – altaqualidadenosvídeos(http://www.iis.net/media/experiencesmoothstreaming)<br />Aceleração via GPU (usaprocessamento local do usuário)<br />Instalação no client (out of browser)<br />Obtenha feedback do cliente sem escrever a aplicação (Sketch Flow)<br />
    44. 44. Silverlight<br />demo<br />
    45. 45. Produtividade<br />Navegando<br />Escrevendo<br /><ul><li>Code generation
    46. 46. Consume first development
    47. 47. Symbol navigation
    48. 48. File navigation</li></ul>Modificando<br />Entendendo<br /><ul><li>Refactor code
    49. 49. Organize code
    50. 50. Analyze relationships and structure
    51. 51. Quick information</li></ul>Testando<br />Depurando<br /><ul><li> Unit testing
    52. 52. TDD
    53. 53. Stepping behavior
    54. 54. LINQ debugging</li></li></ul><li>O que mais?<br />Managed Extensibility Framework?<br />WPF / Silverlight<br />ADO.NET Data Services<br />Azure<br />Domain Specific Language<br />Visual Studio Team System<br />
    55. 55. Links Úteis<br />C# 4.0 Samples and Whitepaper<br />http://code.msdn.microsoft.com/csharpfuture<br />Visual C# Developer Center<br />http://csharp.net<br />SharpCode<br />http://www.sharpcode.com.br<br />Meu Blog<br />http://www.carloscds.net<br />
    56. 56. Querusar a plataforma.Net ?<br /><ul><li>Temos consultoria especializada em treinamento para equipes de desenvolvimento;
    57. 57. Migração de Delphi para C#;
    58. 58. Migração de PHP para Asp.Net;
    59. 59. Migraçao de WebServices para WCF;
    60. 60. Implementação de Visual Studio Team System;
    61. 61. Desenvolvimento Asp.Net, Silverlight, Windows Mobile;</li></ul> www.cds-software.com.br<br />
    62. 62. Perguntas ?<br />Carlos dos Santos<br />cds@cds-software.com.br <br />www.carloscds.net<br />@cdssoftware<br />

    ×