Panoramica della programmazione asincronaAsync Overview

Fino a non molto tempo fa, per avere app più veloci bastava acquistare un nuovo PC o server. Ad un certo punto, però, questa tendenza si è fermata.Not so long ago, apps got faster simply by buying a newer PC or server and then that trend stopped. Anzi, si è invertita.In fact, it reversed. Sono comparsi telefoni cellulari con chip ARM a core singolo da 1ghz e i carichi di lavoro dei server si sono spostati sulle macchine virtuali.Mobile phones appeared with 1ghz single core ARM chips and server workloads transitioned to VMs. Gli utenti vogliono interfacce a velocità di risposta elevata e i titolari di business vogliono server scalabili in base alle loro attività aziendali.Users still want responsive UI and business owners want servers that scale with their business. Il passaggio ai dispositivi mobili e cloud e una popolazione connessa a Internet che ormai supera i 3 miliardi di utenti, hanno avuto come risultato lo sviluppo di nuovi modelli di software.The transition to mobile and cloud and an internet-connected population of >3B users has resulted in a new set of software patterns.

  • Ci si aspetta che le applicazioni client siano sempre attive, sempre connesse e costantemente reattive all'interazione dell'utente, ad esempio al tocco, con valutazioni dell'archivio applicazioni sempre ottime.Client applications are expected to be always-on, always-connected and constantly responsive to user interaction (for example, touch) with high app store ratings!
  • Ci si attende dai servizi che sappiano gestire i picchi di traffico scalando verticalmente e orizzontalmente senza intoppi.Services are expected to handle spikes in traffic by gracefully scaling up and down.

La programmazione asincrona è una tecnica fondamentale che semplifica la gestione di pesanti operazioni I/O simultanee su diversi core.Async programming is a key technique that makes it straightforward to handle blocking I/O and concurrent operations on multiple cores. .NET offre ad app e servizi la capacità di garantire velocità di risposta ed elasticità grazie a modelli di programmazione asincrona a livello di linguaggio facili da usare in C#, VB 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#, VB, and F#.

Perché scrivere codice asincrono?Why Write Async Code?

Le app moderne fanno un uso intensivo di I/O file e rete.Modern apps make extensive use of file and networking I/O. Le API I/O solitamente si bloccano per impostazione predefinita, con conseguenti esperienze utente e uso dell'hardware poco soddisfacenti, a meno che non si voglia imparare a usare modelli complessi.I/O APIs traditionally block by default, resulting in poor user experiences and hardware utilization unless you want to learn and use challenging patterns. Le API asincrone basate su attività e il modello di programmazione asincrona a livello di linguaggio invertono questa tendenza, rendendo l'esecuzione asincrona predefinita, con pochi concetti nuovi da apprendere.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.

Il codice asincrono ha le caratteristiche seguenti:Async code has the following characteristics:

  • Gestisce più richieste server cedendo i thread per gestire più richieste durante l'attesa del ritorno delle richieste I/O.Handles more server requests by yielding threads to handle more requests while waiting for I/O requests to return.
  • Consente alle interfacce utente di essere più reattive, cedendo thread all'interazione dell'interfaccia utente durante l'attesa delle richieste I/O e spostando le attività con esecuzione prolungata ad altri core della 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.
  • Molte delle API di .NET più recenti sono asincrone.Many of the newer .NET APIs are asynchronous.
  • Scrivere codice asincrono in .NET è facile.It's easy to write async code in .NET!

Argomenti successiviWhat's next?

Per altre informazioni, vedere l'argomento La programmazione asincrona in dettaglio.For more information, see the Async in depth topic.

L'argomento Modelli di programmazione asincrona offre una panoramica dei tre modelli di programmazione asincroni supportati in .NET:The Asynchronous Programming Patterns topic provides an overview of the three asynchronous programming patterns supported in .NET:

Per altre informazioni sul modello di programmazione basato su attività consigliato, vedere l'argomento Programmazione asincrona basata su attività.For more information about recommended task-based programming model, see the Task-based asynchronous programming topic.