Visão geral da assincroniaAsync Overview

Não muito tempo atrás, os aplicativos ficavam mais rápidos simplesmente comprando um computador ou servidor mais novo e então essa tendência parou.Not so long ago, apps got faster simply by buying a newer PC or server and then that trend stopped. Na verdade, ela foi invertida.In fact, it reversed. Surgiram telefones celulares com chips ARM de núcleo único de 1 GHz e as cargas de trabalho do servidor passaram para VMs.Mobile phones appeared with 1ghz single core ARM chips and server workloads transitioned to VMs. Os usuários ainda querem uma interface do usuário responsiva e os proprietários de negócios querem servidores que ajustem a escala com seus negócios.Users still want responsive UI and business owners want servers that scale with their business. A transição para celular e nuvem e uma população conectada à Internet de >3B usuários resultaram em um novo conjunto de padrões de software.The transition to mobile and cloud and an internet-connected population of >3B users has resulted in a new set of software patterns.

  • Os aplicativos cliente devem estar sempre ativos, sempre conectados e constantemente responsivos à interação do usuário (por exemplo, toque) com classificações altas na loja de aplicativos!Client applications are expected to be always-on, always-connected and constantly responsive to user interaction (for example, touch) with high app store ratings!
  • Os serviços devem lidar com picos de tráfego escalando e reduzindo horizontalmente sem problemas.Services are expected to handle spikes in traffic by gracefully scaling up and down.

A programação assíncrona é uma técnica chave que torna fácil de lidar com o bloqueio de E/S e operações simultâneas em vários núcleos.Async programming is a key technique that makes it straightforward to handle blocking I/O and concurrent operations on multiple cores. O .NET fornece a capacidade para que aplicativos e serviços sejam responsivos e elásticos com modelos de programação assíncrona de nível de linguagem fáceis de usar em C#, Visual Basic e F #..NET provides the capability for apps and services to be responsive and elastic with easy-to-use, language-level asynchronous programming models in C#, Visual Basic, and F#.

Por que escrever código assíncrono?Why Write Async Code?

Os aplicativos modernos fazem amplo uso de E/S de arquivos e rede.Modern apps make extensive use of file and networking I/O. As APIs de E/S tradicionalmente bloqueiam por padrão, resultando em experiências de usuário e utilização de hardware ruins, a menos que você deseje aprender e usar padrões desafiadores.I/O APIs traditionally block by default, resulting in poor user experiences and hardware utilization unless you want to learn and use challenging patterns. O modelo de programação assíncrona em nível de linguagem e as APIs assíncronas baseadas em tarefa invertem esse modelo, tornando a execução assíncrona o padrão com poucos novos conceitos para aprender.Task-based async APIs and the language-level asynchronous programming model invert this model, making async execution the default with few new concepts to learn.

O código assíncrono tem as seguintes características:Async code has the following characteristics:

  • Lida com mais solicitações de servidor gerando threads para lidar com mais solicitações enquanto espera as solicitações de E/S retornarem.Handles more server requests by yielding threads to handle more requests while waiting for I/O requests to return.
  • Permite que as interfaces do usuário sejam mais responsivas gerando threads para a interação da interface do usuário enquanto espera as solicitações de E/S e fazendo a transição do trabalho de longa execução para outros núcleos de CPU.Enables UIs to be more responsive by yielding threads to UI interaction while waiting for I/O requests and by transitioning long-running work to other CPU cores.
  • Muitas das APIs do .NET mais novas são assíncronas.Many of the newer .NET APIs are asynchronous.
  • É fácil escrever código assíncrono no .NET!It's easy to write async code in .NET!

E agora?What's next?

Para obter mais informações, consulte os comentários no tópico Assincronia detalhada.For more information, see the Async in depth topic.

O tópico Padrões de programação assíncrona fornece uma visão geral dos três padrões de programação assíncronos com suporte no .NET Framework:The Asynchronous Programming Patterns topic provides an overview of the three asynchronous programming patterns supported in .NET:

Para obter mais informações sobre o modelo de programação baseado em tarefa recomendado, consulte o tópico Programação assíncrona baseada em tarefas.For more information about recommended task-based programming model, see the Task-based asynchronous programming topic.