SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
A evolução e o futuro da
            linguagem C# (1.0, 2.0, 3.0, 4, 5)
            (30/01/2011)
             Rogério Moraes de Carvalho
             Consultor e Instrutor de Tecnologias da Informação
             Twitter: @rogeriomc




                   Virtual Developer Day
.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET
Evolução da linguagem C#
                                     Programação assíncrona,
                       C# 5          compilador como um serviço, ...
                       (2012?)
                                   Objetos tipados dinamicamente,
                   C# 4            parâmetros opcionais e nomeados,
                  (Abr 2010)
                                   covariância e contravariância, …
                               Language Integrated Query (LINQ),
             C# 3.0            expressões Lambda, métodos de
         (Nov 2007)
                               extensão, tipos anônimos, ...
                       Generics, Iterators, tipos parciais, tipos anuláveis,
     C# 2.0            classes estáticas, métodos anônimos, ...
     (Nov 2005)
                  Código gerenciado, linguagem de POO, suporte nativo a
C# 1.0            propriedades e eventos, documentação XML, exceções,
(Fev 2002)        segurança de tipos, delegates, sobrecarga de operadores, ...
                                     Virtual Developer Day 2011 | .NET Interior
C# 1.0

• Criada do zero para o .NET Framework 1.0
• Algumas características da linguagem
  – Linguagem de POO de tipos seguros
  – Suporta tipos por valor e por referência
    • Estruturas, enumerações, classes, interfaces,
      delegates e arrays
  – Código gerenciado (com coletor de lixo)
  – Várias categorias de membros em alguns tipos
    • Campos, métodos, propriedades, eventos, ...
                 Virtual Developer Day 2011 | .NET Interior
C# 2.0

• Principais facilidades introduzidas
  – Iterators
     • Permite que o compilador gere automaticamente
       código que implementa um dos seguintes tipos:
        – IEnumerable, IEnumerator
        – IEnumerable<T>, IEnumerator<T>
     • Instruções yield return ou yield break
  – Métodos anônimos
     • Facilita a instanciação de delegates evitando a
       necessidade da criação de métodos separados
                  Virtual Developer Day 2011 | .NET Interior
C# 3.0

• Principal facilidade introduzida
  – Language INtegrated Query (LINQ)
     • Conjunto de tecnologias para permitir a integração
       de capacidades de consulta diretamente para a
       linguagem C#
     • Facilita a escrita de códigos para:
        –   ordenar,
        –   filtrar,
        –   juntar,
        –   agrupar e
        –   agregar dados de fontes de dados variadas
                     Virtual Developer Day 2011 | .NET Interior
C# 4

• Principal facilidade introduzida
  – Tipos dinâmicos
     • Operações em tipos dinâmicos são ignoradas na
       checagem de tipo em tempo de compilação
     • As operações são resolvidas em tempo de
       execução
     • Introdução da palavra-chave dynamic
     • Ambiente de execução que adiciona um conjunto
       de serviços para linguagens dinâmicas no CLR
        – Dynamic Language Runtime (DLR)
                  Virtual Developer Day 2011 | .NET Interior
Programação síncrona

• Características da programação síncrona
  – Uma thread simples é usada para o
    processamento do fragmento de código
  – Cada membro de função executado precisa
    terminar o seu processamento para que um
    próximo seja executado




               Virtual Developer Day 2011 | .NET Interior
Demo Síncrono




  Virtual Developer Day 2011 | .NET Interior
Programação assíncrona

• Características da programação assíncrona
  – Tarefas distintas são divididas entre duas ou
    mais threads que processam blocos de código
    simultaneamente
    • Ou, pelo menos, dividindo tempo do processador
  – Um membro de função executado não precisa
    terminar o seu processamento para que um
    próximo seja executado

                Virtual Developer Day 2011 | .NET Interior
APM

• Asynchronous Programming Model (APM)
  – Primeiro padrão de programação assíncrona
    introduzido no .NET Framework 1.0
  – Versão assíncrona de NomeMetodo
    • Método BeginNomeMetodo
       – Inicia a operação assíncrona e retorna um objeto que
         implementa a interface IAsyncResult
       – Inclui os parâmetros da versão síncrona do método e
         outros dois: delegate AsyncCallback e objeto de estado
    • Método EndNomeMetodo
       – Finaliza a operação assíncrona e pode retornar um valor
                  Virtual Developer Day 2011 | .NET Interior
EAP

• Event-based Asynchronous Pattern (EAP)
  – Segundo padrão de programação assíncrona
    introduzido no .NET Framework 2.0
  – Versão assíncrona de NomeMetodo
    • Método NomeMetodoAsync
       – Inicia uma operação assíncrona
    • Evento NomeMetodoCompleted
       – Evento para sinalizar a finalização da operação assíncrona



                   Virtual Developer Day 2011 | .NET Interior
TAP

• Task-based Asynchronous Pattern (TAP)
  – Novo padrão para programação assíncrona
  – Baseado nos tipos Task e Task<TResult> do
    namespace System.Threading.Tasks
    • Usados para representar operações assíncronas
       – Tipo Task: representa uma operação assíncrona sem um
         resultado
       – Tipo Task<TResult>: representa uma operação assíncrona
         com um resultado do tipo TResult


                  Virtual Developer Day 2011 | .NET Interior
TAP

• Versão assíncrona de um método com TAP
  – Nomenclatura (um único método)
    • Método NomeMetodoAsync (sufixo Async)
  – Parâmetros
    • Mesmos parâmetros na mesma ordem
       – Parâmetros de saída (out) e por referência (ref) devem ser
         evitados
  – Tipo de retorno
    • Tipo Task, se o método for void
    • Tipo Task<TipoRetorno>, se o método não for void
                   Virtual Developer Day 2011 | .NET Interior
Async CTP

• Visual Studio Async CTP (PDC - 28/10/2010)
  – Community Tecnology Preview das novas
    características para simplificar a programação
    assíncrona em C# e Visual Basic
     • Projetado para o Visual Studio 2010 RTM
  – Suporta a nova sintaxe e APIs para
    desenvolvimento assíncrono
  – Download
     • http://go.microsoft.com/fwlink/?LinkId=203690
                 Virtual Developer Day 2011 | .NET Interior
C# 5

• Principal facilidade a ser introduzida
  – Funções assíncronas
     • Novas palavras-chaves: async e await
        – A palavra-chave await é usada para marcar chamadas
          assíncronas
            » Dispensa a necessidade de se criar funções de
              callback
        – A palavra-chave async deve estar presente na assinatura
          de funções que fazem chamadas assíncronas
            » A palavra-chave await somente pode ser usada se a
              palavra-chave async na assinatura da função

                   Virtual Developer Day 2011 | .NET Interior
C# 5

• Características das funções assíncronas
  – Tipos de retorno das funções assíncronas
     • Deve ser void, Task ou Task<TResult>
  – Avaliação de funções assíncronas
     • Inicialmente idêntica a uma função síncrona
     • Quando atinge uma expressão await, a função
       assíncrona deve retornar ao seu chamador
        – Se a função assíncrona não for void, um objeto Task ou
          Task<TResult> será retornado para o chamador


                   Virtual Developer Day 2011 | .NET Interior
Demo async e await (C# 5)




       Virtual Developer Day 2011 | .NET Interior
Contatos


• E-mail
  rogeriom@gmx.net
• Blog
  http://rogeriomc.wordpress.com/
• Twitter
  @rogeriomc

            Virtual Developer Day 2011 | .NET Interior
Virtual Developer Day
.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET




                               Virtual Developer Day 2011 | .NET Interior

Más contenido relacionado

La actualidad más candente

Palestra: LINQ via C#
Palestra: LINQ via C# Palestra: LINQ via C#
Palestra: LINQ via C# Thiago Vidal
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.netAndre Nascimento
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1Julian Correa
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - IntroduçãoDaniel Araújo
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScriptDan Vitoriano
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinariaPatrese Renan
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 

La actualidad más candente (20)

Palestra: LINQ via C#
Palestra: LINQ via C# Palestra: LINQ via C#
Palestra: LINQ via C#
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.net
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Csharp
CsharpCsharp
Csharp
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - Introdução
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 

Destacado

ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”mauriciopel
 
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 Rogério Moraes de Carvalho
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCguest489a65e
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5Rogério Moraes de Carvalho
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOLeonardo Sousa
 

Destacado (6)

ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
 
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVC
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAO
 

Similar a A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONIFábio Delboni
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry Pires
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry PiresNovidades do CSharp 4.0 - C. Augusto Proiete & Henrry Pires
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry PiresComunidade NetPonto
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
T@rget trust c# 4.0 - fundamentos da linguagem
T@rget trust   c# 4.0 - fundamentos da linguagemT@rget trust   c# 4.0 - fundamentos da linguagem
T@rget trust c# 4.0 - fundamentos da linguagemTargettrust
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureGiovanni Bassi
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 

Similar a A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011 (20)

Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Novidades do CSharp 4.0
Novidades do CSharp 4.0Novidades do CSharp 4.0
Novidades do CSharp 4.0
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry Pires
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry PiresNovidades do CSharp 4.0 - C. Augusto Proiete & Henrry Pires
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry Pires
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
Introducao ao .Net
Introducao ao .NetIntroducao ao .Net
Introducao ao .Net
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
Aula 1
Aula 1Aula 1
Aula 1
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
T@rget trust c# 4.0 - fundamentos da linguagem
T@rget trust   c# 4.0 - fundamentos da linguagemT@rget trust   c# 4.0 - fundamentos da linguagem
T@rget trust c# 4.0 - fundamentos da linguagem
 
Novidades do .NET 3.5
Novidades do .NET 3.5Novidades do .NET 3.5
Novidades do .NET 3.5
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 

Más de Rogério Moraes de Carvalho

TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemRogério Moraes de Carvalho
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Rogério Moraes de Carvalho
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoRogério Moraes de Carvalho
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...Rogério Moraes de Carvalho
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...Rogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realRogério Moraes de Carvalho
 

Más de Rogério Moraes de Carvalho (20)

Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo real
 

A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

  • 1. A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4, 5) (30/01/2011) Rogério Moraes de Carvalho Consultor e Instrutor de Tecnologias da Informação Twitter: @rogeriomc Virtual Developer Day .NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET
  • 2. Evolução da linguagem C# Programação assíncrona, C# 5 compilador como um serviço, ... (2012?) Objetos tipados dinamicamente, C# 4 parâmetros opcionais e nomeados, (Abr 2010) covariância e contravariância, … Language Integrated Query (LINQ), C# 3.0 expressões Lambda, métodos de (Nov 2007) extensão, tipos anônimos, ... Generics, Iterators, tipos parciais, tipos anuláveis, C# 2.0 classes estáticas, métodos anônimos, ... (Nov 2005) Código gerenciado, linguagem de POO, suporte nativo a C# 1.0 propriedades e eventos, documentação XML, exceções, (Fev 2002) segurança de tipos, delegates, sobrecarga de operadores, ... Virtual Developer Day 2011 | .NET Interior
  • 3. C# 1.0 • Criada do zero para o .NET Framework 1.0 • Algumas características da linguagem – Linguagem de POO de tipos seguros – Suporta tipos por valor e por referência • Estruturas, enumerações, classes, interfaces, delegates e arrays – Código gerenciado (com coletor de lixo) – Várias categorias de membros em alguns tipos • Campos, métodos, propriedades, eventos, ... Virtual Developer Day 2011 | .NET Interior
  • 4. C# 2.0 • Principais facilidades introduzidas – Iterators • Permite que o compilador gere automaticamente código que implementa um dos seguintes tipos: – IEnumerable, IEnumerator – IEnumerable<T>, IEnumerator<T> • Instruções yield return ou yield break – Métodos anônimos • Facilita a instanciação de delegates evitando a necessidade da criação de métodos separados Virtual Developer Day 2011 | .NET Interior
  • 5. C# 3.0 • Principal facilidade introduzida – Language INtegrated Query (LINQ) • Conjunto de tecnologias para permitir a integração de capacidades de consulta diretamente para a linguagem C# • Facilita a escrita de códigos para: – ordenar, – filtrar, – juntar, – agrupar e – agregar dados de fontes de dados variadas Virtual Developer Day 2011 | .NET Interior
  • 6. C# 4 • Principal facilidade introduzida – Tipos dinâmicos • Operações em tipos dinâmicos são ignoradas na checagem de tipo em tempo de compilação • As operações são resolvidas em tempo de execução • Introdução da palavra-chave dynamic • Ambiente de execução que adiciona um conjunto de serviços para linguagens dinâmicas no CLR – Dynamic Language Runtime (DLR) Virtual Developer Day 2011 | .NET Interior
  • 7. Programação síncrona • Características da programação síncrona – Uma thread simples é usada para o processamento do fragmento de código – Cada membro de função executado precisa terminar o seu processamento para que um próximo seja executado Virtual Developer Day 2011 | .NET Interior
  • 8. Demo Síncrono Virtual Developer Day 2011 | .NET Interior
  • 9. Programação assíncrona • Características da programação assíncrona – Tarefas distintas são divididas entre duas ou mais threads que processam blocos de código simultaneamente • Ou, pelo menos, dividindo tempo do processador – Um membro de função executado não precisa terminar o seu processamento para que um próximo seja executado Virtual Developer Day 2011 | .NET Interior
  • 10. APM • Asynchronous Programming Model (APM) – Primeiro padrão de programação assíncrona introduzido no .NET Framework 1.0 – Versão assíncrona de NomeMetodo • Método BeginNomeMetodo – Inicia a operação assíncrona e retorna um objeto que implementa a interface IAsyncResult – Inclui os parâmetros da versão síncrona do método e outros dois: delegate AsyncCallback e objeto de estado • Método EndNomeMetodo – Finaliza a operação assíncrona e pode retornar um valor Virtual Developer Day 2011 | .NET Interior
  • 11. EAP • Event-based Asynchronous Pattern (EAP) – Segundo padrão de programação assíncrona introduzido no .NET Framework 2.0 – Versão assíncrona de NomeMetodo • Método NomeMetodoAsync – Inicia uma operação assíncrona • Evento NomeMetodoCompleted – Evento para sinalizar a finalização da operação assíncrona Virtual Developer Day 2011 | .NET Interior
  • 12. TAP • Task-based Asynchronous Pattern (TAP) – Novo padrão para programação assíncrona – Baseado nos tipos Task e Task<TResult> do namespace System.Threading.Tasks • Usados para representar operações assíncronas – Tipo Task: representa uma operação assíncrona sem um resultado – Tipo Task<TResult>: representa uma operação assíncrona com um resultado do tipo TResult Virtual Developer Day 2011 | .NET Interior
  • 13. TAP • Versão assíncrona de um método com TAP – Nomenclatura (um único método) • Método NomeMetodoAsync (sufixo Async) – Parâmetros • Mesmos parâmetros na mesma ordem – Parâmetros de saída (out) e por referência (ref) devem ser evitados – Tipo de retorno • Tipo Task, se o método for void • Tipo Task<TipoRetorno>, se o método não for void Virtual Developer Day 2011 | .NET Interior
  • 14. Async CTP • Visual Studio Async CTP (PDC - 28/10/2010) – Community Tecnology Preview das novas características para simplificar a programação assíncrona em C# e Visual Basic • Projetado para o Visual Studio 2010 RTM – Suporta a nova sintaxe e APIs para desenvolvimento assíncrono – Download • http://go.microsoft.com/fwlink/?LinkId=203690 Virtual Developer Day 2011 | .NET Interior
  • 15. C# 5 • Principal facilidade a ser introduzida – Funções assíncronas • Novas palavras-chaves: async e await – A palavra-chave await é usada para marcar chamadas assíncronas » Dispensa a necessidade de se criar funções de callback – A palavra-chave async deve estar presente na assinatura de funções que fazem chamadas assíncronas » A palavra-chave await somente pode ser usada se a palavra-chave async na assinatura da função Virtual Developer Day 2011 | .NET Interior
  • 16. C# 5 • Características das funções assíncronas – Tipos de retorno das funções assíncronas • Deve ser void, Task ou Task<TResult> – Avaliação de funções assíncronas • Inicialmente idêntica a uma função síncrona • Quando atinge uma expressão await, a função assíncrona deve retornar ao seu chamador – Se a função assíncrona não for void, um objeto Task ou Task<TResult> será retornado para o chamador Virtual Developer Day 2011 | .NET Interior
  • 17. Demo async e await (C# 5) Virtual Developer Day 2011 | .NET Interior
  • 18. Contatos • E-mail rogeriom@gmx.net • Blog http://rogeriomc.wordpress.com/ • Twitter @rogeriomc Virtual Developer Day 2011 | .NET Interior
  • 19. Virtual Developer Day .NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET Virtual Developer Day 2011 | .NET Interior