Async (Übersicht)Async Overview

Es ist noch nicht lange her, da wurden Apps einfach durch die Ausführung auf einem aktuelleren PC oder Server schneller, und dann endete dieser Trend.Not so long ago, apps got faster simply by buying a newer PC or server and then that trend stopped. In der Tat hat er sich umgekehrt.In fact, it reversed. Mobiltelefone mit 1-GHz-Single Core-ARM-Chips erschienen auf dem Markt, und Serverarbeitsauslastungen wurden VMs übertragen.Mobile phones appeared with 1ghz single core ARM chips and server workloads transitioned to VMs. Benutzer wünschen immer noch reaktionsfähige Benutzeroberflächen, und Geschäftsinhaber wünschen sich Server, die sich ihren Unternehmen anpassen können.Users still want responsive UI and business owners want servers that scale with their business. Aus dem Übergang zu Mobilgeräten und zur Cloud und mehr als 3 Mrd. Internetbenutzern resultiert eine neue Gruppe von Softwaremustern.The transition to mobile and cloud and an internet-connected population of >3B users has resulted in a new set of software patterns.

  • Clientanwendungen sollen Always On/Always Connected sein und ständig auf Benutzerinteraktionen reagieren (z.B. Berühren) – mit hohen App Store-Bewertungen!Client applications are expected to be always-on, always-connected and constantly responsive to user interaction (for example, touch) with high app store ratings!
  • Dienste sollen Verkehrsspitzen durch ordnungsgemäßes zentrales Hoch- und Herunterskalieren behandeln.Services are expected to handle spikes in traffic by gracefully scaling up and down.

Asynchrone Programmierung ist eine wichtige Technik, mit der E/A-Blockierung und gleichzeitige Vorgänge auf mehreren Kernen direkt behandelt werden können.Async programming is a key technique that makes it straightforward to handle blocking I/O and concurrent operations on multiple cores. .NET bietet mit benutzerfreundlichen asynchronen Programmiermodellen auf Sprachebene in C#, VB und F# die Möglichkeit, Apps und Dienste reaktionsfähig und flexibel zu machen..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#.

Warum sollten Sie Async-Code schreiben?Why Write Async Code?

Moderne Apps machen umfassenden Gebrauch von Datei- und Netzwerk-E/A.Modern apps make extensive use of file and networking I/O. E/A-APIs sind üblicherweise Blockaden, was Benutzerfreundlichkeit und Hardwarenutzung beeinträchtigt, solange Sie keine herausfordernden Muster erlernen und verwenden möchten.I/O APIs traditionally block by default, resulting in poor user experiences and hardware utilization unless you want to learn and use challenging patterns. Taskbasierte, asynchrone APIs und das asynchrone Programmiermodell auf Sprachebene kehren dieses Modell um, sodass die asynchrone Ausführung zum Standard wird, wobei einige neue Konzepte zu erlernen sind.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.

Asynchroner Code weist folgende Merkmale auf:Async code has the following characteristics:

  • Behandeln einer höheren Zahl von Serveranforderungen durch Erzeugen von Threads zum Behandeln einer höheren Zahl von Anforderungen während des Wartens auf die Rückmeldung von E/A-Anforderungen.Handles more server requests by yielding threads to handle more requests while waiting for I/O requests to return.
  • Reaktionsfähigere Benutzeroberflächen durch Erzeugen von Threads für die Benutzeroberflächeninteraktion während des Wartens auf E/A-Anforderungen und durch Übertragen zeitintensiver Abläufe auf andere CPU-Kerne.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.
  • Viele der neueren .NET-APIs sind asynchron.Many of the newer .NET APIs are asynchronous.
  • In .NET schreiben Sie im Handumdrehen asynchronen Code!It's easy to write async code in .NET!

AusblickWhat's next?

Tiefe Einblicke in asynchrone Konzepte und Programmierung finden Sie unter Async ausführlich und Task-based asynchronous programming (Taskbasiertes, asynchrones Programmieren).For a deep dive into async concepts and programming, see Async in depth and Task-based asynchronous programming.