Microsoft Community Launch 2010: .NET Framework 4
Upcoming SlideShare
Loading in...5
×
 

Microsoft Community Launch 2010: .NET Framework 4

on

  • 5,077 views

Palestra sobre as novidades de diversas tecnologias do .NET Framework 4. ...

Palestra sobre as novidades de diversas tecnologias do .NET Framework 4.
Evolução da plataforma, .NET Framework 4, C# 4, Visual Basic 2010, ASP.NET Web Forms 4, ASP.NET AJAX 4, ASP.NET MVC 2, WPF 4, MEF, ADO.NET Entity Framework 4, WCF Data Services, WCF 4, WF 4, TPL, PLINQ, DLR, Interop, Compatibilidade e CLR 4.

Statistics

Views

Total Views
5,077
Views on SlideShare
3,340
Embed Views
1,737

Actions

Likes
0
Downloads
93
Comments
0

2 Embeds 1,737

http://rogeriomc.wordpress.com 1717
https://rogeriomc.wordpress.com 20

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • O .NET Framework 4 incluirá vários melhoramentos no framework que tornarão o desenvolvimento de aplicações mais simples. Nesta sessão serão apresentadas
  • Dynamic Language Runtime (DLR) : Ambiente de execução que acrescenta um conjunto de serviços para linguagens dinâmicas ao Common Language Runtime (CLR). O DLR torna mais simples o desenvolvimento de linguagens dinâmicas para rodar no .NET Framework e adiciona características dinâmicas às linguagens tipadas estaticamente. Mais informações: http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx Native Image Generator (Ngen.exe) : O Native Image Generator (Ngen.exe) é uma ferramenta que melhora o desempenho de aplicações gerenciadas. Ngen.exe cria imagens nativas, que são arquivos contendo código de máquina compilado para processadores específicos, e o instala no Native Image Cache no computador local. O ambiente de execução pode usar imagens nativas do cache ao invés de usar o compilador Just-In-Time (JIT) para compilar o assembly original. Mais informações: http://msdn.microsoft.com/en-us/library/6t9t5wcf(VS.100).aspx
  • Mais informações: http://msdn.microsoft.com/en-us/library/we86c8x2(VS.100).aspx
  • Mais informações: http://msdn.microsoft.com/en-us/library/we86c8x2(VS.100).aspx
  • Mais informações: http://weblogs.asp.net/scottgu/archive/2009/08/25/clean-web-config-files-vs-2010-and-net-4-0-series.aspx
  • Mais informações: http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(VS.100).aspx
  • URL Routing : O roteamento de URL é uma capacidade que foi introduzida com o ASP.NET 3.5 SP1 e que já é usada com aplicações ASP.NET MVC para expor URLs limpas e amigáveis para SEO Web 2.0. O roteamento de URL permite que você configure a aplicação para aceitar requisições de URLs que não são mapeadas para arquivos físicos. Ao invés, você pode usar roteamento para definir URLs que são significativas semanticamente para usuários e que podem ajudar com Search-Engine Optimization (SEO). Mais informações: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx
  • Mais informações: http://www.asp.net/LEARN/whitepapers/aspnet4/default.aspx#_TOC2_3 Estimated Time: 3 minutes In order to enable our ability to easily create dynamic UI and place the rendering process on the client, we need a way to define templates of markup that represent the UI we wish to create, and allow the runtime to instantiate them for us. This alleviates the need to write a bunch of DOM code or depend on server-rendering. If you’ve used Web Forms before, you’re already familiar with the approach many of its server controls take. You have access to a set of properties that allow you to define arbitrary templates of content, complete with HTML, server controls, and data binding expressions. This model makes it very easy to create dynamic UI that is rendered server-side [Advance Animation] . ASP.NET AJAX 4.0 introduces the ability to define templates as well, but purely client-side. Now you can create the HTML markup you want to use for representing your template, complete with HTML and data binding expressions. In this example, we’ve created an unordered list template whose content is a list item whose content is the value of the Name property of the JSON object that is bound to it. The data binding expression resembles that of WPF.
  • Estimated Time: 2 minutes The DataContext control essentially provides a connection between your client application and the server. The server component can be represented by any JSON compatible service, such as ASMX, WCF, and ADO.NET Data Services. The DataContext handles requesting data from the server [Advance Animation] , as well as retrieving the returned JSON data. On the client, any JSON objects that were retrieved via a DataContext are participating in change tracking [Advance Animation] . This means that you can go about making any modifications you need, and can then simply save changes back to the server via the DataContext [Advance Animation] without having to worry about determining what changes have occurred.
  • Managed Extensibility Framework (MEF) : O MEF foi introduzido no .NET Framework 4. O Managed Extensibility Framework ou MEF é uma biblioteca para criar aplicações extensíveis leves. Ele permite aos desenvolvedores de aplicações descobrirem e usar extensões sem a necessidade de configurações. Também permite que desenvolvedores de extensões facilmente encapsulem código e evitem a fragilidade de dependências rígidas. O MEF não somente permite que extensões sejam reutilizadas dentro de aplicações, mas também entre aplicações. Mais informações: http://msdn.microsoft.com/en-us/library/dd460648(VS.100).aspx Nova biblioteca = somente um assembly, uma .dll normal, usada por qualquer linguagem .NET. Composta dinamicamente = a composição ocorre em tempo de execução e comportamentos de composição diferem dependendo de suas configurações. Bertrand Meyer (born 1950 in France) is an academic, author, and consultant in the field of computer languages. He created the Eiffel programming language. Meyer pursues the ideal of simple, elegant and user-friendly computer languages and is one of the earliest and most vocal proponents of object-oriented programming (OOP). His book Object-Oriented Software Construction is widely considered to be the best work on presenting the case for OOP [ dubious – discuss ] [1] . Know vs. Unknown Due to it’s declarative-based and discovery-enabled approach, MEF becomes very powerful to use in an application where it is being used to put together a bunch of potentially unknown parts into a working application. You might also think about this as a 3 rd party extending your application. When you are compiling your application (long before you ship), you have absolutely no idea on what sorts of extensions might be built for your application into the future. That’s the power of extensible applications, they can be extended and used in ways the original authors perhaps didn’t expect, or didn’t have the time to do themselves. If you are concerned strictly with the “known” part of the equation (composing different software entities together that are all known at compile time), there are other solutions that are available today that are very powerful for this scenario: namely IoC containers (IoC = Inversion of Control). The Managed Extensibility Framework was designed primarily with the unknown aspect of extension in mind.
  • MESSAGING: Today, concurrency usually has to be done by the brightest developers in a business. The problem with this is that the brightest developers are then being consumed by concurrency minutia rather than being able to be focused on core business problems and helping the business’s bottom line. By providing new libraries and tools that make it easy to write parallel code, we hope to allow the best and brightest developers focus on the business problems at hand. This in turn enables other developers to be able to address concurrency and parallelism. This is the long term goal of Microsoft with the Parallel Computing Initiative. Visual Studio 2010 and .NET Framework 4 is merely the first step being taken in this direction. Task Parallel Library (TPL) : Conjunto de tipos públicos e APIs nos namespaces System.Threading e System.Threading.Tasks no .NET Framework 4. O objetivo do TPL é tornar os desenvolvedores mais produtivos simplificando o processo de acrescentar paralelismo e concorrência a aplicações. O TPL escala o grau de concorrência dinamicamente para usar todos os processadores disponíveis de modo mais eficiente. Além disto, o TPL manipula o particionamento do trabalho, o agendamento de threads no ThreadPool, suporte a cancelamento, gerenciamento de estado e outros detalhes de baixo nível. Usando a TPL, você pode maximizar o desempenho do seu código enquanto foca no trabalho que o software precisa realizar. Mais informações: http://msdn.microsoft.com/en-us/library/dd460717(VS.100).aspx http://msdn.microsoft.com/en-us/magazine/cc163340.aspx Parallel LINQ (PLINQ) : Implementação paralela do LINQ to Objects. PLINQ implementa o conjunto completo de Standard Query Operators como métodos de extensão para o namespace System.Linq e tem operadores adicionais para operações paralelas. O PLINQ combina a simplicidade e a legibilidade da sintaxe do LINQ com o poder da programação paralela. Assim como o código destinado ao Task Paralell Library, consulta escalam no grau de concorrência baseado nas capacidades do computador hospedeiro. Em muitos cenários, o PLINQ pode aumentar significadamente a velocidade das consultas LINQ to Objects usando todos os núcleos no computador hospedeiro mais eficientemente. Isto aumenta o desempenho e traz o poder da computação de alto desempenho para os desktops. Mais informações: http://msdn.microsoft.com/en-us/library/dd460688(VS.100).aspx
  • MESSAGING: PLINQ is a technology that allows developers to easily leverage manycore. The great thing about PLINQ is that if you are using LINQ-to-objects, there is a very minimal impact to your code in order for it to use PLINQ. All it takes to use PLINQ is adding “.AsParallel()” to your query. This will turn the query into a PLINQ query and will use the PLINQ execution engine when executed. One small change, and your code now takes advantage of all the hardware available to you. NOTES: AsParallel() works by returning an IParallelEnumerable so every subsequent query operator works against the new IParallelEnumerable rather than the normal IEnumerable. See the hands-on lab for Parallel Extensions for more details.
  • Dynamic Language Runtime (DLR) : Ambiente de execução que adiciona um conjunto de serviços para linguagens dinâmicas ao Common Language Runtime (CLR). O DLR torna simples o desenvolvimento de linguagens dinâmicas para rodar no .NET Framework e para adicionar características dinâmicas a linguagens tipadas estaticamente. Linguagens dinâmicas podem identificar o tipo de um objeto em tempo de execução, enquanto em linguagens tipadas estaticamente, como C# e Visual Basic (com uso de Option Explicit On ) você deve especificar os tipos dos objetos em tempo de projeto. Exemplos de linguagens dinâmicas são: Liso, Smalltalk, JavaScript, PHP, Ruby, Phython, ColdFusion, Lua, Cobra e Groovy. O DLR introduz objetos dinâmicos ao C# (C# 4.0) e ao Visual Basic (Visual Basic 2010) no Visual Studio 2010 para suportar comportamento dinâmico nestas linguagens e habilitar a sua interoperabilidade com linguagens dinâmicas. A versão open-source do DLR está disponível para download no Web Site CodePlex: http://www.codeplex.com/dlr. Mais informações: http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx
  • O poder do DLR está no fato de existirem muitos binders para DLR. Deste modo, é possível interoperar com linguagens dinâmicas, como Python e Ruby, do modo esperado. Contudo, um fato ainda mais importante, é que existem binders disponíveis para .NET, Silverlight e Office. Isto permite a iteração entre estas plataformas de maneiras muito poderosas que não eram possíveis anteriormente. O DLR adiciona um conjunto de serviços ao CLR para um melhor suporte a linguagens dinâmicas. Estes serviços incluem os seguintes: Expression Trees – O DLR usa árvores de expressão para representar semânticas da linguagem. Para este propósito, o DLR entendeu as árvores de expressão LINQ para incluir fluxo de controle, atribuição e outros nós de modelagem de linguagens. Nota: Árvores de expressão representam código em uma estrutura de dados como árvore, onde cada nó é uma expressão. Por exemplo, uma chamada de método ou uma operação binária como x < y. Call Site Caching – Um local de chamadas dinâmicas ( dynamic call site ) é um local no código onde você realiza uma operação como a + b ou a.b() em objetos dinâmicos. O DLR armazena em cache as características de a e b (usualmente os tipos destes objetos) e informações sobre a operação. Se esta operação foi realizada anteriormente, o DLR recupera toda informação necessária do cache para despachar ( dispatch ). Mais informações: http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx
  • Enquanto estamos no mundo estaticamente tipado, interagir com objetos é uma experiência agradável e intuitiva. Contudo, logo que você sai desta fronteira e precisa começar a usar reflexão, o seu código se torna muito menos elegante, mais difícil de ler e mais difícil de manter. Usando ScriptObject no DLR torna isto um pouco mais simples e fornece algumas chamadas de métodos diretas para invocar métodos com parâmetros específicos. Enquanto isto é uma melhoria, ele ainda é um desvio da maneira que nós usamos para interagir com objetos. Usando a nova palavra chave dynamic no C# 4, nós podemos chamar o método .Add acima exatamente como se ele fosse estaticamente tipado no primeiro fragmento de código. Neste caso, o objeto calc é tipado estaticamente para ser dinâmico. Uma vez que nós temos referência a objetos dinâmicos, nós podemos invocar métodos dinamicamente, realizar conversões dinamicamente, etc.
  • O Office tem milhares de APIs para addins expostas através de COM. Mas, COM foi projetado para código nativo. Interop assemblies ajudam na tradução entre código gerenciado e código nativo contendo todos os dados de marshalling necessários para tornar a comunicação possível. Interop Assemblies e Primary Interop Assemblies (PIAs) pofdem ser gerados com a ferramenta de linha de comando Type Library Importer (Tlbimp.exe). Mais informações: http://msdn.microsoft.com/en-us/library/697w37zd.aspx http://msdn.microsoft.com/en-us/library/aa302338.aspx
  • O Office é um exemplo tradicional de interoperabilidade com COM. Por exemplo, add-ins no Excel podem facilmente precisar se comunicar entre si. Uma vez que eles precisam se comunicar, eles devem usar os mesmos tipos para o Excel. Por causa do modo que o sistema de tipos trabalha no CLR, estes tipos também devem estar no mesmo assembly. Então, o assembly é requerido de estar num local comum (por exemplo, o GAC) para permitir que os add-ins funcionem adequadamente. Atualmente, o Office não exige que o .NET Framework seja instalado na máquina. Se uma máquina não tem o .NET instalado, não existirá o GAC e nada para distribuir o PIA. Aqui reside o problema. Mesmo que um add-in esteja usando somente uma função, enum, etc. do interop assembly, o add-in necessitará distribuir o PIA inteiro com ele. O PIA do Office tem de 10-20 MB, ele é gigante. Então, você pode ter um add-in de 100 KB sendo distribuído com uma PIA de 20 MB.
  • Existem dois recursos principais que possibilitam descartar PIAs para sempre. Avanços no compilador (o trabalho de incorporação trabalha até mesmo no nível de métodos, então nem mesmo uma interface completa não é requerida). Avanços no ambiente de execução Mesmo que eles estejam em diferentes assemblies. Mesmo que eles tenham diferentes subconjuntos. Por isso, a equivalência de tipos permite que duas interfaces, enums, delegates e estruturas de dados simples sejam marcadas como equivalentes. Type Equivalence and Embedded Interop Types : Equivalência de tipos significa que objetos COM que são passados de um assembly gerenciado para o outro podem ser convertidos ( cast ) para o tipo gerenciado apropriado no assembly que está recebendo. A partir do .NET Framework 4, o Common Language Runtime (CLR) suporta incorporar informações de tipos para tipos COM diretamente em assemblies gerenciados, ao invés de exigir que o assembly gerenciado obtenha informações de tipo para tipos COM de assemblies de interoperabilidade. Mais informações: http://msdn.microsoft.com/en-us/library/dd997297(VS.100).aspx
  • In-Process Side by Side (In-Process SxS) : É a habilidade de executar múltiplas versões do CLR em um simples processo. Infelizmente, a limitação de executar somente um ambiente de execução por processo significa que para cenários de componentes COM gerenciados e de extensibilidade, onde existem múltiplas aplicações independentes executando no mesmo processo, não existe uma escolha simples que funcionará para todo mundo. Esta limitação significa que alguns componentes não irão pegar o ambiente de execução desejado e, independente do alto esforço de se manter a compatibilidade, uma porcentagem deles irá parar de funcionar. A nova habilidade de carregar múltiplas versões do ambiente de execução em um processo resolve estes problemas. Uma das novas características no CLR 4 é o In-Process Side by Side (Inproc SxS) – uma característica que permite usar múltiplas versões do .NET Framework no mesmo processo. Para aplicações que usam add-ins (particularmente add-ins COM), in-proc SxS permite fornecer um nível de compatibilidade nunca possível anteriormente. Se você escrever aplicações que usam o modelo de ass-in (para Office ou outros hospedeiros), você precisará entender os detalhes de in-proc SxS, de modo que você possa fazer uso das novas APIs de hospedagem que fornecem esta compatibilidade. Se você está pensando em usar .NET 4, mas preocupado com o impacto de instalar o .NET 4 na máquina do usuário final, então você necessitará pelo menos de um alto nível de entendimento de in-proc SxS – esta é a característica que permite que a instalação de uma nova versão do .NET tenha menos impacto que anteriormente. Finalmente, mesmo se nenhuma das anteriores se aplicam a você, você ainda sim pode achar interessante – esta é provavelmente a mudança mais complexa no .NET 4. Mais informações: http://blogs.msdn.com/clrteam/archive/2009/06/03/in-process-side-by-side-part1.aspx http://blogs.msdn.com/clrteam/archive/2009/06/07/in-process-side-by-side-part-2-common-in-proc-sxs-scenarios.aspx http://msdn.microsoft.com/en-us/magazine/ee819091.aspx

Microsoft Community Launch 2010: .NET Framework 4 Microsoft Community Launch 2010: .NET Framework 4 Presentation Transcript

  • .NET Framework 4 Rogério Moraes de Carvalho Consultor e Instrutor de Tecnologias da Informação rogeriomoraescarvalho.spaces.live.com [email_address] @rogeriomc Community Launch 2010 no Distrito Federal #CLDF 20 de março de 2010
  • Evolução da plataforma .NET .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 © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • .NET Framework 4 WF Windows Forms DLR ASP.NET (Web Forms, MVC) WCF … WPF ADO.NET (Entity Framework, LINQ to SQL, ...) WCS © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc Base Class Libraries CLR (Common Language Runtime) JIT & NGEN Garbage Collector Security Model Exception Handling Loader & Binder
  • Alguns cenários em .NET 4.0 © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc Aplicações Desktop WPF 4 MEF Aplicações Web ASP.NET Web Forms 4 ASP.NET AJAX 4 ASP.NET MVC 2 Serviços WCF 4
  • Alguns cenários em .NET 4.0 © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc Computação paralela Task Parallel Library (TPL) Parallel LINQ (PLINQ) Acesso a dados Entity Framework 4 WCF Data Services Ambiente de execução DLR Integration Type Equivalence In-Process SxS
  • Linguagem C# 4.0
    • Suporte dinâmico
    • Nomes e argumentos opcionais
    • Covariância e contravariância
      • Covariância permite usar um tipo mais derivado do especificado num parâmetro genérico e contravariância permite usar um tipo menos derivado
    dynamic calc = ObterCalculadora(); public void EscreverInfoLog(string mensagem , DateTime instante = DateTime.Now) {…} © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Linguagem Visual Basic 2010
    • Propriedades implementadas automaticamente
    • Inicializadores de coleção
    • Continuador de linha implícito
    Public Property Nome As String Dim primos As New List( Of Integer ) From { 2 , 3 , 5 , 7 , 11 } Dim processos = From proc In Process.GetProcesses() Where proc.MainWindowTitle.Contains( "Visual Studio" ) Select proc.ProcessName, proc.Id, proc.MainWindowTitle © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Linguagem Visual Basic 2010
    • Suporte a expressões Lambda em subrotinas
    • Suporte a tipos dinâmicos
    • Covariância e contravariância
      • Covariância permite usar um tipo mais derivado do especificado num parâmetro genérico e contravariância permite usar um tipo menos derivado
    Dim escreverLinha = Sub (x) Console.WriteLine(x) Public Class ArquivoSomenteLeitura Inherits DynamicObject © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET Web Forms 4 – Web.config limpo
    • .NET 3.0, 3.5, 3.5 SP1
      • Mesmo ambiente de execução do .NET 2.0 (CLR 2)
      • O machine.config não foi atualizado para evitar sobrescrita de configurações personalizadas
        • As funcionalidades pós .NET 2.0 (ASP.NET AJAX, ASP.NET Dynamic Data, ...) tinham que ficar no Web.config local
    • .NET 4.0
      • Inclui um novo ambiente de execução (CLR 4)
      • Existe um novo machine.config
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET Web Forms 4 – Linha selecionada
    • Persistência da linha selecionada nos controles de dados GridView e ListView
      • Nas versões anteriores ao ASP.NET 4, a linha selecionada era baseada no índice da página
        • Por exemplo, se a quarta linha fosse selecionada na página 1, ao navegar para a página 2 a quarta linha desta estaria selecionada
      • No ASP.NET 4, os controles GridView e ListView têm a propriedade EnablePersistedSelection
        • true: seleção baseada no valor da(s) chave(s)
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET Web Forms 4 – Client ID
    • Maior controle do ID cliente no ASP.NET Web Forms 4
      • ClientIDMode : AutoID, Static, Predictable, Inherit (padrão)
    ctl00 _ContentPlaceHolderPrincipal _DropDownListUF ClientID: © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc 1) Página mestra (não possui ID) 2) Página de conteúdo (ID: "ContentPlaceHolderPrincipal") 3) DropDownList (ID: "DropDownListUF")
  • ASP.NET Web Forms 4 – Roteamento Roteamento ASP.NET Rota: Produtos/{Categoria} -> Produtos.aspx Página Web Forms Nome do arquivo: Produtos.aspx Valor de roteamento: Categoria= &quot;Softwares&quot; Programaticamente: Page.RouteData.Values[ &quot;Categoria&quot; ] Declarativamente em controles de fonte de dados: < asp:RouteParameter Name =&quot;Categoria&quot; RouteKey =&quot;Categoria&quot;/> © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc Requisição: Produtos/Softwares Resposta
  • ASP.NET Web Forms 4 – Chart Control © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET AJAX 4 – Client Templates
    • Do lado do servidor (ASP.NET Web Forms)
    • <ItemTemplate>
    • <li> <%# Eval(&quot;Nome&quot;) %> </li>
    • </ItemTemplate>
    • Do lado do cliente (ASP.NET AJAX 4)
    • <ul class=&quot; sys-template &quot;>
    • <li> {{Nome}} </li>
    • </ul>
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET AJAX 4 - DataContext 1. Requisição 2. Dados JSON 3. Modificação dos dados 4. Salva os dados © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc ASMX WCF WCF Data Services ASP.NET MVC JsonResult Etc. DataContext
  • ASP.NET MVC 2
    • Templated Helpers
      • Html.DisplayFor
      • Similar a como os field templates trabalham no ASP.NET Dynamic Data
    • Áreas
      • Permite organizar grandes projetos em múltiplas pequenas seções
    • Suporte a controladores assíncronos
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ASP.NET MVC 2
    • Suporte para DefaultValueAttribute em parâmetros de métodos de ação
    • Suporte a vinculação de dados binários com Model Binders
    • Html.ValidationSummary Helper Method pode apresentar erros em nível de modelo
    • Biblioteca para validação do lado do cliente
    • ...
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WPF 4 – DataGrid
    • DataGrid (100% compatível com o Silverlight)
      • Controle que apresenta dados tabulados
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WPF 4 – Calendar
    • Calendar (100% compatível com o Silverlight)
      • Controle que permite ao usuário selecionar uma ou mais datas numa apresentação visual
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WPF 4 – DatePicker
    • DatePicker (100% compatível com o Silverlight)
      • Controle que permite ao usuário selecionar uma data num quadro de combinação
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WPF 4 – Suporte a toque e manipulação
    • Suporte a toque e manipulação
      • O WPF 4 permite que aplicações respondam a toques
        • Usando um ou mais dedos em um dispositivo sensível a toques
        • Permite realizar diversas operações em elementos na tela, como:
          • Movimentar
          • Redimensionar
          • Girar
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WPF 4 – Outras novidades
    • Diversas outras novidades
      • Avanços relacionados com gráficos e animação
      • Avanços relacionados com textos
      • Diversas mudanças e avanços relacionados com Binding
      • Novos recursos para XAML Browser Applications (XBAPs)
      • Suporte a novos recursos do Windows 7
      • ...
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Managed Extensibility Framework (MEF)
    • O que é o MEF?
      • Uma nova biblioteca no .NET Framework 4 que permite grande reuso de aplicações e componentes
      • As aplicações podem avançar da compilação estática para a composição dinâmica
    • Princípio aberto/fechado de POO
      • Entidades de software devem ser abertos para extensão , mas fechados para modificação
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ADO.NET Entity Framework 4
    • Suporte à modelagem em primeiro lugar
      • Permite a criar o modelo conceitual primeiro e, então, criar o esquema do banco de dados que suporta o modelo
    • Objetos independentes da persistência
      • Permite usar Plain Old CLR Objects (POCOs), assim como objetos existentes de domínio
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ADO.NET Entity Framework 4
    • Carregamento tardio ( Lazy Loading )
      • Permite que objetos relacionados sejam carregados automaticamente da fonte de dados ao acessar a propriedade de navegação
    • Chaves estrangeiras no modelo conceitual
      • Permite criar modelos conceituais em que colunas de chave estrangeira no banco de dados correspondem a propriedades escalares da fonte de dados
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • ADO.NET Entity Framework 4
    • Outras novidades do Entity Framework 4
      • Suporte a tipos complexos no EDM Designer
      • Serviços de nomenclatura (singular e plural)
      • Testabilidade com IObjectSet<T>
      • Novos métodos para desenvolvimento de aplicações em N camadas
      • O controle EntityDataSource suporta o controle QueryExtender para criação de filtros de dados
      • ...
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WCF Data Services no .NET 4
    • O que é o WCF Data Services?
      • Permite a criação e o consumo de serviços de dados baseados em REST (Representational State Transfer) para a Web
      • Anteriormente conhecido como ADO.NET Data Services
        • Inicialmente, era conhecido pelo codinome Astoria ainda na fase de desenvolvimento
        • Introduzido no .NET Framework 3.5 SP1
        • Houve uma atualização
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WCF Data Services no .NET 4
    • Avanços do lado do servidor
      • Paginação do lado do servidor
        • Agora, um serviço de dados pode ser configurado para retornar os recursos requisitados como um conjunto de respostas paginadas
      • Contagem de linhas
        • Um novo segmento de caminho $count permite receber somente o número total de recursos retornados por uma URI
          • http://dominio/Northwind.svc/Customers('ALFKI')/Orders/$count
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WCF Data Services no .NET 4
    • Avanços do lado do servidor
      • Projeções de consultas
        • Resultados de consultas podem ser modificados para incluir somente um subconjunto de propriedades com uso da nova opção de consulta $select
          • http://dominio/Northwind.svc/Orders(10643)?$select=OrderID,OrderDate
      • Streaming de recursos binários
        • Permite recuperar e salvar dado BLOB (Binary Large OBject) independente da entidade a que ele pertence
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • WCF Data Services no .NET 4
    • Avanços do lado do cliente
      • Vinculação de dados (Data Binding)
        • A nova classe DataServiceCollection<T> fornece um mecanismo simplificado de data binding para controles WPF e Silverlight
      • Contagem de linhas
        • A biblioteca cliente do WCF Data Services foi atualizada para permitir o acesso à informação de contagem numa resposta de consulta
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Windows Communication Foundation 4
    • Integração com System.Web.Routing
    • Suporte para WS-Discovery
    • Manipulação de erros HTTP REST
    • Caching declarativo em serviços WCF REST
    • Página de ajuda para serviço WCF REST
    • ...
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Windows Workflow Foundation 4
    • Novo controle Flowchart
      • Poderoso novo controle de fluxo de atividades que permite modelar laços e estruturas de decisão
    • Novas atividades de controle de fluxo
      • DoWhile, Pick, TryCatch, ForEach, Switch e ParallelForEach
    • Atividades para manipular membros de dados
      • Assign e AddToCollection
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Computação paralela com .NET 4
    • A iniciativa da computação paralela
      • Permitir que desenvolvedores resolvam problemas de negócios e não problemas de concorrência
    • Task Parallel Library (TPL)
      • Biblioteca para simplificar o acréscimo de paralelismo e concorrência em aplicações
    • Parallel LINQ (PLINQ)
      • Implementação paralela do LINQ to Objects
    • Melhorias no System.Threading
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Parallel LINQ (PLINQ)
    • Permite que desenvolvedores usem diversos processadores/núcleos ( cores ) com um mínimo de impacto no modelo de programação LINQ existente
    var q = from p in people .AsParallel()          where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd         orderby p.Year ascending          select p; © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Dynamic Language Runtime (DLR) Common Language Runtime C# VB Ruby Python © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Dynamic Language Runtime (DLR) Common Language Runtime C# VB Ruby Python Dynamic Language Runtime © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Programação dinâmica com .NET 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… © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Objetos tipados dinamicamente object calc = ObterCalculadora(); Type tipoCalc = calc.GetType(); object res = tipoCalc.InvokeMember( &quot;Adicionar&quot; , BindingFlags.InvokeMethod, null , new object [] { 10, 20 }); int soma = Convert.ToInt32(res); ScriptObject calc = ObterCalculadora(); object res = calc.Invoke( &quot;Adicionar&quot; , 10, 20); int soma = Convert .ToInt32(res); dynamic calc = ObterCalculadora(); int sum = calc.Add(10, 20); Tipado estaticamente para ser dinâmico Invocação dinâmica do método Coversão dinâmica Calculadora calc = ObterCalculadora(); int soma = calc.Adicionar(10, 20); © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Interop Assemblies
    • Interop Assemblies traduzem entre código gerenciado e COM
      • Para cada interface, estrutura, enumeração, delegate e membro COM existe um equivalente gerenciado .NET com dados de conversão ( marshalling ) que tornam a comunicação possível
    • Primary Interop Assemblies (PIAs)
      • Interop Assembly assinado pelo criador do tipo COM original
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Problema com Interop Assemblies
    • Interop Assemblies podem causar alguns problemas...
      • É comum a comunicação entre add-ins do Office
      • Portanto, eles devem usar os mesmos tipos
        • Estes tipos devem estar no mesmo assembly, devido ao modelo usado pelo sistema de tipos do CLR
        • Se o .NET Framework estiver instalado na máquina, então o PIA do Office (~20 MB) pode ser instalado no GAC
        • Se o .NET Framework não estiver instalado na máquina, o add-in tem que ser distribuído com o PIA do Office
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • PIA é dispensável no .NET Framework 4.0
    • Tipos Interop incorporados
      • Compiladores podem incorporar as partes do interop assembly que o add-in realmente usa
    • Equivalência de tipos
      • O ambiente de execução (CLR) certifica que as definições destes tipos são consideradas equivalentes
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Compatibilidade no .NET Framework 4.0
    • O .NET Framework 4.0 é altamente compatível com assemblies de versões anteriores
    • O .NET Framework 4.0 não executa assemblies de versões anterioes automaticamente
      • É necessário compilar o assembly para o .NET 4.0
      • Ou usar o elemento <supportedRuntime> no arquivo de configuração do assembly
    < configuration >< startup > < supportedRuntime version =&quot;v3.5&quot;/> </ startup ></ configuration > © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Compatibilidade no .NET Framework 4.0
    • “ Se o .NET 4.0 é altamente compatível, por que não executar assemblies .NET 3.5 automaticamente na versão 4.0?”
      • “ A MELHOR coisa é sempre dar preferência pela execução na versão do framework para o qual o assembly foi compilado ”
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • CLR 2 – Existência lado a lado Processo hospedeiro (Exemplo: Excel) 1.1 add-in .NET 1.1 © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc .NET 2.0 2.0 add-in 3.0 3.5 3.0 add-in 3.5 add-in
  • CLR 4 – In-Process Side by Side .NET 2.0 .NET 4.0 2.0 add-in 3.0 3.5 Processo hospedeiro (Exemplo: Excel) 3.0 add-in 3.5 add-in 4.0 add-in © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Rogério Moraes de Carvalho Consultor e Instrutor de Tecnologias da Informação rogeriomoraescarvalho.spaces.live.com [email_address] @rogeriomc © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • What's New in Visual C# 2010
      • http://msdn.microsoft.com/en-us/library/bb383815(VS.100).aspx
    • What's New in Visual Basic 2010
      • http://msdn.microsoft.com/en-us/library/we86c8x2(VS.100).aspx
    • Clean Web.Config Files (VS 2010 and .NET 4.0 Series)
      • http://weblogs.asp.net/scottgu/archive/2009/08/25/clean-web-config-files-vs-2010-and-net-4-0-series.aspx
    • Persisting Row Selection in Data Controls
      • http://www.asp.net/LEARN/whitepapers/aspnet4/default.aspx#_TOC3_6
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • Control.ClientIDMode Property
      • http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(VS.100).aspx
    • URL Routing with ASP.NET 4 Web Forms (VS 2010 and .NET 4.0 Series)
      • http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx
    • Built-in Charting Controls (VS 2010 and .NET 4 Series)
      • http://weblogs.asp.net/scottgu/archive/2010/02/07/built-in-charting-controls-vs-2010-and-net-4-series.aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • Samples Environment for Microsoft Chart Controls
      • http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591
    • How to use the ASP.NET Chart control within an ASP.NET MVC application
      • http://www.codecapers.com/post/Build-a-Dashboard-With-Microsoft-Chart-Controls.aspx
    • Client Data Access
      • http://www.asp.net/LEARN/whitepapers/aspnet4/default.aspx#_TOC2_3
    • Client DataContext and AdoNetDataContext Classes
      • http://www.asp.net/LEARN/whitepapers/aspnet4/default.aspx#_TOC2_4
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • What’s New in ASP.NET MVC 2
      • http://www.asp.net/learn/whitepapers/what-is-new-in-aspnet-mvc/
    • WPF 4 DataGrid Class
      • http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(VS.100).aspx
    • WPF 4 Calendar Class
      • http://msdn.microsoft.com/en-us/library/system.windows.controls.calendar(VS.100).aspx
    • WPF 4 DatePicker Class
      • http://msdn.microsoft.com/en-us/library/system.windows.controls.datepicker(VS.100).aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • Walkthrough: Creating Your First Touch Application (WPF 4)
      • http://msdn.microsoft.com/en-us/library/ee649090(VS.100).aspx
    • What's New in WPF Version 4
      • http://msdn.microsoft.com/en-us/library/bb613588(VS.100).aspx
    • Managed Extensibility Framework Overview
      • http://msdn.microsoft.com/en-us/library/dd460648(VS.100).aspx
    • What's New in ADO.NET – ADO.NET Entity Framework 4? http://msdn.microsoft.com/en-us/library/ex6y04yf(VS.100).aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • What's New in WCF Data Services
      • http://msdn.microsoft.com/en-us/library/ee373845(VS.100).aspx
    • What's New in Windows Communication Foundation
      • http://msdn.microsoft.com/en-us/library/dd456789(VS.100).aspx
    • What's New in Windows Workflow Foundation
      • http://msdn.microsoft.com/en-us/library/dd489410(VS.100).aspx
    • Task Parallel Library (TPL)
      • http://msdn.microsoft.com/en-us/library/dd460717(VS.100).aspx
    • Parallel LINQ (PLINQ)
      • http://msdn.microsoft.com/en-us/library/dd460688(VS.100).aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • Dynamic Language Runtime (DLR)
      • http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx
    • Using Type dynamic (C# Programming Guide)
      • http://msdn.microsoft.com/en-us/library/dd264736(VS.100).aspx
    • dynamic (C# Reference)
      • http://msdn.microsoft.com/en-us/library/dd264741(VS.100).aspx
    • Working with Dynamic Objects (Visual Basic)
      • http://msdn.microsoft.com/en-us/library/dd537660(VS.100).aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • How to: Generate Interop Assemblies from Type Libraries
      • http://msdn.microsoft.com/en-us/library/697w37zd.aspx
    • Primary Interop Assemblies (PIAs)
      • http://msdn.microsoft.com/en-us/library/aa302338.aspx
    • Type Equivalence and Embedded Interop Types
      • http://msdn.microsoft.com/en-us/library/dd997297(VS.100).aspx
    • Application Compatibility and Deployment
      • http://msdn.microsoft.com/en-us/library/ms171868(VS.100).aspx
    • <supportedRuntime> Element
      • http://msdn.microsoft.com/en-us/library/w4atty68(VS.100).aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc
  • Onde obter informações adicionais?
    • In-Process Side by Side (In-Process SxS)
      • http://blogs.msdn.com/clrteam/archive/2009/06/03/in-process-side-by-side-part1.aspx
      • http://blogs.msdn.com/clrteam/archive/2009/06/07/in-process-side-by-side-part-2-common-in-proc-sxs-scenarios.aspx
      • http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
    © 2010, Rogério Moraes de Carvalho E-mail: rogeriom@gmx.net Twitter: @rogeriomc