Información general de AsyncAsync Overview

No hace tanto tiempo, las aplicaciones funcionaban más rápido simplemente al comprar un PC o servidor nuevo y después se detuvo esa tendencia.Not so long ago, apps got faster simply by buying a newer PC or server and then that trend stopped. De hecho, se ha invertido.In fact, it reversed. Aparecieron teléfonos móviles con chips ARM de núcleo único de 1 GHz y cargas de trabajo de servidor que pasaron a máquinas virtuales.Mobile phones appeared with 1ghz single core ARM chips and server workloads transitioned to VMs. Los usuarios seguían queriendo una interfaz de usuario dinámica y los propietarios de empresas querían servidores que se ajustaran a su negocio.Users still want responsive UI and business owners want servers that scale with their business. La transición al móvil y a la nube y una población conectada a Internet de más de 3 mil millones de usuarios ha generado un nuevo conjunto de patrones 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.

  • Se espera que las aplicaciones cliente estén siempre activadas y conectadas, y que respondan adecuadamente a la interacción del usuario (p. ej., función táctil) con altas calificaciones en la tienda de aplicaciones.Client applications are expected to be always-on, always-connected and constantly responsive to user interaction (for example, touch) with high app store ratings!
  • Se espera que los servicios controlen los picos de tráfico al escalar y reducir verticalmente con facilidad.Services are expected to handle spikes in traffic by gracefully scaling up and down.

La programación de Async es una técnica clave que facilita controlar las operaciones simultáneas y de E/S de bloqueo en varios núcleos.Async programming is a key technique that makes it straightforward to handle blocking I/O and concurrent operations on multiple cores. .NET proporciona a servicios y aplicaciones la capacidad de ser dinámicos y elásticos con modelos de programación asincrónicos de nivel de lenguaje y fáciles de usar en C#, VB y 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#, VB, and F#.

¿Por qué escribir código asincrónico?Why Write Async Code?

Las aplicaciones modernas usan de forma intensiva la E/S de archivos y redes.Modern apps make extensive use of file and networking I/O. Tradicionalmente, las API de E/S bloquean de manera predeterminada, lo que da lugar a experiencias de usuario y uso del hardware pobres a menos que quiera aprender y usar patrones exigentes.I/O APIs traditionally block by default, resulting in poor user experiences and hardware utilization unless you want to learn and use challenging patterns. Las API asincrónicas basadas en tareas y el modelo de programación asincrónico de nivel de lenguaje invierten este modelo, de modo que establecen la ejecución asincrónica como la predeterminada con algunos conceptos nuevos que 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.

El código asincrónico tiene las siguientes características:Async code has the following characteristics:

  • Controla más solicitudes del servidor al producir subprocesos que controlan más solicitudes mientras esperan a que devuelvan las solicitudes de E/S.Handles more server requests by yielding threads to handle more requests while waiting for I/O requests to return.
  • Permite que las interfaces de usuario sean más dinámicas al ceder subprocesos a la interacción de la interfaz de usuario mientras esperan las solicitudes de E/S y al pasar trabajo de ejecución prolongada a otros 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.
  • Muchas de las API de .NET más recientes son asincrónicas.Many of the newer .NET APIs are asynchronous.
  • Es fácil escribir código asincrónico en .NET.It's easy to write async code in .NET!

Pasos adicionalesWhat's next?

Para obtener más información, vea el tema Async en profundidad.For more information, see the Async in depth topic.

En el tema Modelos para la programación asincrónica, se proporciona una introducción de los tres modelos de programación asincrónica que se admiten en .NET:The Asynchronous Programming Patterns topic provides an overview of the three asynchronous programming patterns supported in .NET:

Para obtener más información sobre el modelo de programación basado en tareas recomendado, consulte el tema Programación asincrónica basada en tareas.For more information about recommended task-based programming model, see the Task-based asynchronous programming topic.