SlideShare ist ein Scribd-Unternehmen logo
1 von 19
3ª Reunião Coimbra - 19/11/2011   http://netponto.org




                      As Novidades do C# 5.0
                                    Paulo Morgado
Patrocinadores desta reunião
Paulo Morgado
A Evolução do C#

                                                     C# 5.0
                                                     Programação Assíncrona
                                   C# 4.0            Windows Runtime
                                   Programação Dinâmica
                          C# 3.0
                          LINQ
              C# 2.0
              Genericos

    C# 1.0
    Managed
Assincronismo, Paralelismo e Concorrência
• Execução paralela significa que vários troços de código são
  executados ao mesmo tempo (em paralelo).
• Execução concorrente significa que vários troços de código podem
  aceder aos mesmos dados, não necessariamente ao mesmo
  tempo, mas durante uma operação (que pode ser interrompida).
• Execução assíncrona significa que o código é executado fora da
  linha lógica o código atual.
• Os três modos de execução acima podem ocorrer isoladamente ou
  em combinação. Vários troços de código podem estar em execução
  simultaneamente sem que isso signifique concorrência se não
  acederem aos mesmos recursos. Uma operação assíncrona pode
  ser executada sincronamente.
Asynchronous Programming Model (APM)
• Até à versão 4.0 da plataforma a norma para operações
  assíncronas era o Assynchronous Programming Model
  (APM) que consiste em dois métodos que chamados
  BeginOperation e EndOperation.
• Este modelo é seguido pela quase totalidade das classes
  da Base Class Library (BCL), como, por exemplo, as
  streams.
• Os métodos anónimos introduzidos no C# 2.0 ou as
  expressões Lambda introduzidas no C# 3.0 podem tornar
  o código mais legível, mas não deixa de ser difícil
  perceber a intenção do código.
Event-Based Asynchronous Pattern (EBA)

• A partir da versão 2.0 começaram a surgir
  algumas implementações da Event-based
  Asynchronous Patter (EAP) que consiste num
  método OperationAsync e um evento
  OperationCompleted.
• Um exemplo da utilização deste padrão é a
  classe WebClient.
• Mais uma vez, usando métodos anónimos ou
  expressões Lambda talvez até se perceba a
  intenção do código.
Task-based Asynchronous Pattern (TAP)

• A plataforma 4.0 introduziu uma nova forma de
  programação assíncrona baseada em tarefas que faz
  uso da Task Parellel Library (TPL).
• Esta biblioteca permite a execução de tarefas
  assíncronas mesmo que as classes usadas não
  tenham uma API assíncrona, assim como definir a
  tarefa a executar após a conclusão de uma tarefa
  (continuação) e permite o cancelamento da
  execução a tarefa.
• Esta API por ter surgido após o C# 3.0 foi desenhada
  já com vista à utilização de expressões Lambda
O Futuro Da Programação Assíncrona Na
Plataforma .NET
• A próxima versão da plataforma .NET vai trazer, não um
  novo padrão de execução ou uma nova biblioteca, mas
  uma nova forma de escrever código assíncrono.
• Assentando na TPL a nova forma de escrever código
  introduz duas novas palavras chave: async (Async em
  Visual Basic) e await (Await em Visual Basic).
• A palavra chave async é aplicada aos métodos e indica ao
  compilador que deve reescrever o método de forma
  assíncrona.
• A palavra chave await identifica, dentro de um método, a
  execução assíncrona de um método.
O Futuro Da Programação Assíncrona Na
Plataforma .NET
• Na versão 4.5 da plataforma todas
  as classes com APIs assíncronas
  passam a disponibilizar uma API
  Task-based.
Questões?
Citação...
“There’s no END to C#”
Referências
Visual C# Developer Center
     –   http://csharp.net/

Visual Studio Asynchronous Programming
     –   http://msdn.microsoft.com/async

Asynchronous Programming Design Patterns
     –   http://msdn.microsoft.com/library/ms228969.aspx

Asynchronous Programming Overview
     –   http://msdn.microsoft.com/library/ms228963.aspx

The Windows Runtime
     –   http://msdn.microsoft.com/library/windows/apps/hh464942.aspx

//build/ WINDOWS
     –   http://www.buildwindows.com/
Referências
Parallel Programming with .NET
     –   http://blogs.msdn.com/b/pfxteam/archive/tags/async/

Lucian's VBlog
     –   http://blogs.msdn.com/b/lucian/archive/tags/async/

Eric Lippert’s Fabulous Adventures In Coding
     –   http://blogs.msdn.com/b/ericlippert/

Task-based Asynchronous Pattern
     –   http://www.microsoft.com/downloads/details.aspx?FamilyID=4969771d-9855-4421-baa0-c91848db4ab0


Jon Skeet: EDUASYNC
     –   http://msmvps.com/blogs/jon_skeet/archive/tags/Eduasync/default.aspx
Recursos
Visual Studio Async CTP (Version 3)
     –   http://go.microsoft.com/fwlink/?LinkId=203690

Visual Studio 11 Developer Preview
     –   http://go.microsoft.com/fwlink/?LinkId=217619

Async Demo for Visual Studio 2010 SP1 and Visual Studio Async CTP (Version 3)
     –   http://code.msdn.microsoft.com/VS2010SP1-Aync-Demo-e159e6da

Async Demo for Visual Studio 11 Developer Preview
     –   http://code.msdn.microsoft.com/VS11-Aync-Demo-2068b361
Patrocinadores desta reunião
Próximas reuniões presenciais
• 19/11/2011 – Novembro (Coimbra)
• 17/12/2011 – Dezembro


Reserva estes dias na agenda! :)

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
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
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
Presente e Futuro do C# - Visual Studio Summit 2018
Presente e Futuro do C# - Visual Studio Summit 2018Presente e Futuro do C# - Visual Studio Summit 2018
Presente e Futuro do C# - Visual Studio Summit 2018Renato Groff
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programaçãoSandro Lopes
 
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
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivosFlávio Freitas
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11André Phillip Bertoletti
 
Subvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLSubvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLRicardo Coelho
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookRafael Alves
 

Was ist angesagt? (20)

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...
 
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...
 
Zephir
ZephirZephir
Zephir
 
Seminário: Delphi
Seminário: DelphiSeminário: Delphi
Seminário: Delphi
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Presente e Futuro do C# - Visual Studio Summit 2018
Presente e Futuro do C# - Visual Studio Summit 2018Presente e Futuro do C# - Visual Studio Summit 2018
Presente e Futuro do C# - Visual Studio Summit 2018
 
Lp m2(parte1)
Lp m2(parte1)Lp m2(parte1)
Lp m2(parte1)
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
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
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11
 
Subvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLSubvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOL
 
Montagem
MontagemMontagem
Montagem
 
Apostila linguagem pascal
Apostila linguagem pascalApostila linguagem pascal
Apostila linguagem pascal
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
 
C# básica
C#   básicaC#   básica
C# básica
 

Ähnlich wie C# 5.0 Novidades Programação Assíncrona

Preparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularPreparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularNize Costa
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpMarcio Chiaveli
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Programação Assíncrona com C# 5
Programação Assíncrona com C# 5Programação Assíncrona com C# 5
Programação Assíncrona com C# 5iMasters
 
Programação assíncrona com C# 5
Programação assíncrona com C# 5Programação assíncrona com C# 5
Programação assíncrona com C# 5Thiago Coelho
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Luiz Arthur
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrenteFabio Duarte
 
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
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Arquitetura Nativa na Nuvem
Arquitetura Nativa na NuvemArquitetura Nativa na Nuvem
Arquitetura Nativa na NuvemGlenio Borges
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 

Ähnlich wie C# 5.0 Novidades Programação Assíncrona (20)

Preparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angularPreparar o ambiente para desenvolvimento angular
Preparar o ambiente para desenvolvimento angular
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharp
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Compilador
CompiladorCompilador
Compilador
 
Programação Assíncrona com C# 5
Programação Assíncrona com C# 5Programação Assíncrona com C# 5
Programação Assíncrona com C# 5
 
Programação assíncrona com C# 5
Programação assíncrona com C# 5Programação assíncrona com C# 5
Programação assíncrona com C# 5
 
Apostila chardwere
Apostila chardwereApostila chardwere
Apostila chardwere
 
C hardware
C hardwareC hardware
C hardware
 
O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrente
 
Microsoft .NET Framework
Microsoft .NET FrameworkMicrosoft .NET Framework
Microsoft .NET Framework
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Arquitetura Nativa na Nuvem
Arquitetura Nativa na NuvemArquitetura Nativa na Nuvem
Arquitetura Nativa na Nuvem
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 

Mehr von Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 

Mehr von Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 

C# 5.0 Novidades Programação Assíncrona

  • 1. 3ª Reunião Coimbra - 19/11/2011 http://netponto.org As Novidades do C# 5.0 Paulo Morgado
  • 4. A Evolução do C# C# 5.0 Programação Assíncrona C# 4.0 Windows Runtime Programação Dinâmica C# 3.0 LINQ C# 2.0 Genericos C# 1.0 Managed
  • 5.
  • 6. Assincronismo, Paralelismo e Concorrência • Execução paralela significa que vários troços de código são executados ao mesmo tempo (em paralelo). • Execução concorrente significa que vários troços de código podem aceder aos mesmos dados, não necessariamente ao mesmo tempo, mas durante uma operação (que pode ser interrompida). • Execução assíncrona significa que o código é executado fora da linha lógica o código atual. • Os três modos de execução acima podem ocorrer isoladamente ou em combinação. Vários troços de código podem estar em execução simultaneamente sem que isso signifique concorrência se não acederem aos mesmos recursos. Uma operação assíncrona pode ser executada sincronamente.
  • 7.
  • 8. Asynchronous Programming Model (APM) • Até à versão 4.0 da plataforma a norma para operações assíncronas era o Assynchronous Programming Model (APM) que consiste em dois métodos que chamados BeginOperation e EndOperation. • Este modelo é seguido pela quase totalidade das classes da Base Class Library (BCL), como, por exemplo, as streams. • Os métodos anónimos introduzidos no C# 2.0 ou as expressões Lambda introduzidas no C# 3.0 podem tornar o código mais legível, mas não deixa de ser difícil perceber a intenção do código.
  • 9. Event-Based Asynchronous Pattern (EBA) • A partir da versão 2.0 começaram a surgir algumas implementações da Event-based Asynchronous Patter (EAP) que consiste num método OperationAsync e um evento OperationCompleted. • Um exemplo da utilização deste padrão é a classe WebClient. • Mais uma vez, usando métodos anónimos ou expressões Lambda talvez até se perceba a intenção do código.
  • 10. Task-based Asynchronous Pattern (TAP) • A plataforma 4.0 introduziu uma nova forma de programação assíncrona baseada em tarefas que faz uso da Task Parellel Library (TPL). • Esta biblioteca permite a execução de tarefas assíncronas mesmo que as classes usadas não tenham uma API assíncrona, assim como definir a tarefa a executar após a conclusão de uma tarefa (continuação) e permite o cancelamento da execução a tarefa. • Esta API por ter surgido após o C# 3.0 foi desenhada já com vista à utilização de expressões Lambda
  • 11. O Futuro Da Programação Assíncrona Na Plataforma .NET • A próxima versão da plataforma .NET vai trazer, não um novo padrão de execução ou uma nova biblioteca, mas uma nova forma de escrever código assíncrono. • Assentando na TPL a nova forma de escrever código introduz duas novas palavras chave: async (Async em Visual Basic) e await (Await em Visual Basic). • A palavra chave async é aplicada aos métodos e indica ao compilador que deve reescrever o método de forma assíncrona. • A palavra chave await identifica, dentro de um método, a execução assíncrona de um método.
  • 12. O Futuro Da Programação Assíncrona Na Plataforma .NET • Na versão 4.5 da plataforma todas as classes com APIs assíncronas passam a disponibilizar uma API Task-based.
  • 15. Referências Visual C# Developer Center – http://csharp.net/ Visual Studio Asynchronous Programming – http://msdn.microsoft.com/async Asynchronous Programming Design Patterns – http://msdn.microsoft.com/library/ms228969.aspx Asynchronous Programming Overview – http://msdn.microsoft.com/library/ms228963.aspx The Windows Runtime – http://msdn.microsoft.com/library/windows/apps/hh464942.aspx //build/ WINDOWS – http://www.buildwindows.com/
  • 16. Referências Parallel Programming with .NET – http://blogs.msdn.com/b/pfxteam/archive/tags/async/ Lucian's VBlog – http://blogs.msdn.com/b/lucian/archive/tags/async/ Eric Lippert’s Fabulous Adventures In Coding – http://blogs.msdn.com/b/ericlippert/ Task-based Asynchronous Pattern – http://www.microsoft.com/downloads/details.aspx?FamilyID=4969771d-9855-4421-baa0-c91848db4ab0 Jon Skeet: EDUASYNC – http://msmvps.com/blogs/jon_skeet/archive/tags/Eduasync/default.aspx
  • 17. Recursos Visual Studio Async CTP (Version 3) – http://go.microsoft.com/fwlink/?LinkId=203690 Visual Studio 11 Developer Preview – http://go.microsoft.com/fwlink/?LinkId=217619 Async Demo for Visual Studio 2010 SP1 and Visual Studio Async CTP (Version 3) – http://code.msdn.microsoft.com/VS2010SP1-Aync-Demo-e159e6da Async Demo for Visual Studio 11 Developer Preview – http://code.msdn.microsoft.com/VS11-Aync-Demo-2068b361
  • 19. Próximas reuniões presenciais • 19/11/2011 – Novembro (Coimbra) • 17/12/2011 – Dezembro Reserva estes dias na agenda! :)