Allgemein Für Administratoren Für Architekten Für Entwickler Für Projektleiter Für Tester News Produkte Publikationen
X
Michael Ring

Michael Ring

Neu in .NET 4.5: Einfachere asynchrone Programmierung

Montag, 19. November 2012

Die bisherigen Versionen des .NET Frameworks erforderten von Entwicklern viel Eigeninitiative, wenn er Methoden asynchron nutzen wollte oder bereitstellen musste. Mit .NET 4.5 haben neue Schlüsselworte Einzug in das Framework gehalten, die den Aufwand für asynchrone Programmierung deutlich vereinfacht.

Im .NET 4.5 Framework (wie auch in der Windows Runtime) enthalten viele Basisklassen bereits Methoden für die asynchrone Programmierung. So kann zum Beispiel über Klassen wie HTTPClient, Socket, StreamWriter, XMLReader asynchron mit dem Dateisystem, Sockets oder dem Web gearbeitet werden. Asynchrone Methoden lassen sich am Suffix Async im Methodennamen erkennen. Und mit den zwei neuen Schlüsselwörtern async und await lässt sich asynchron ähnlich komfortabel programmieren wie synchron.

Über das Schlüsselwort async im Methodenkopf kennzeichnet der Entwickler eine Methode als asynchron. Innerhalb der Methode werden die asynchronen Methoden z.B. aus den .NET Basisklassen aufgerufen. Mit  dem vorangestellten Schlüsselwort await wird dem Compiler der Hinweis gegeben, dass auf die Rückkehr der Methoden gewartet werden soll (siehe Abbildung 1).

Asynchrones Einlesen einer Datei

Abbildung 1 - Asynchrones Einlesen einer Datei

Wird die Methode ReadApplicationConfig aus der Anwendung aufgerufen, so wird ein Puffer angelegt und die Methode ReadAsync zum Starten der asynchronen Leseoperation aufgerufen. Diese Methode kehrt sofort mit einem Task Objekt zurück, welches die laufende asynchronen Leseoperation symbolisiert und die Anweisungen innerhalb der ReadApplicationConfig Methode könnte weiter abgearbeitet werden. Durch das Schlüsselwort await ist hinterlegt, dass die Methode die ihrerseits auf die Ergebnisse im Puffer warten muss. Daher wird die Ausführung der Methode unterbrochen und die Anwendung kann weiterarbeiten. Sobald die Leseoperation abgeschlossen ist, wird die Ausführung der Methode ReadApplicationConfig fortgesetzt und die Konfiguration kann ausgewertet werden.

Bei der Kompilierung erstellt der Compiler automatisch eine Zustandsmaschine (Async State Maschine) und erzeugt den Code zum Anhalten und zur weiteren Ausführung der ReadApplicationConfig Methode (siehe Abbildung 2).

Erzeugter Intermediate Language Code

Abbildung 2 - Erzeugter Intermediate Language Code

Um eigene Methoden asynchron bereit zu stellen, muss statt dem Rückgabewerttyps ein Task mit dem Rückgabetyp als Typ (Task<T>) zurückgegeben werden. Bei der Benennung der Methode sollte darauf geachtet werden, dass der Name auf Async endet.

Weiterhin kann über die Methode Task.Run die parallele Ausführung von Aktivitäten über zusätzliche Threads erreicht werden. Für weitere Informationen sei auf die MSDN und die Dokumentation der Task Klasse verwiesen.

Für asynchrone Operationen in Applikationen auf .NET 4.5 Basis und Windows Store Apps ist eine native Unterstützung im .NET 4.5 Framework vorhanden. Für .NET 4.0 und Silverlight 5 Applikationen kann über das Async Targeting Pack eine Unterstützung für die Entwicklung im Visual Studio 2012 nach installiert werden.

Die neue Funktionalität zur asynchronen Programmierung im .NET Framework 4.5 bietet eine deutliche Vereinfachung. Entwickler können sich auf das Schreiben der Anwendungslogik konzentrieren, da nun der Compiler die asynchrone Umsetzung für sie übernimmt. Diese Weiterentwicklung der verwendeten Technologien ermöglichen es Entwicklern mit wenig Aufwand ihre Effizienz zu steigern.

Verwandte Artikel:

Benötigen Sie Unterstützung bei der Software-Entwicklung und Architektur von .NET basierten Lösungen oder bei Einführung und Anpassung von Visual Studio / Microsoft Test Manager / Team Foundation Server?

Wir stehen Ihnen unter info(at)aitgmbh.de gerne zur Verfügung.

Tags: ,

Hinterlasse eine Antwort