Dieser Artikel wurde maschinell übersetzt.

In Eigener Sache

Überlegungen Zur Asynchronen Programmierung

Michael Desmond

 

Michael DesmondIn diesem Monat MSDN Magazin untersucht die leistungsstarken neuen asynchronen Programmierung Features kommen auf die nächsten Versionen von C#, Visual Basic und Microsoft.NET Framework. Erhältlichen über die Visual Studio Async-CTP-Version, die neue Funktionalität hilft, eine der größten aufkommende Probleme im Zeitalter von multicore-Systemen zu lösen und cloud computing: die Sanktionen, die entstehen, wenn Threads blockiert sind, warten auf Dinge wie Daten von einem Remoteserver oder einer Berechnung in einem anderen Thread abgeschlossen zurückgegeben.

Ich Sprach mit Mads Torgersen, Autor eines dieses Monats Features über asynchrone Programmierung und principal Programmmanager im C# und Visual Basic-Sprache-Team bei Microsoft. HE Notizen, die fast jede Anwendung ist immer verbunden und, dass sich Latenz bietet sich als "Code für eine zentrale Problem." Also Warum sehen wir keine Async-Unterstützung in der.NET Framework 4?

"An der Stelle, wo der Featuresatz wurde gesperrt für die Freigabe, wir hätten eine ernsthafte Reichweite auf eine Sprache-Funktion, aussehen sollte", sagt Torgersen. "Allerdings geliefert F# zur gleichen Zeit mit einem asynchronen Sprache-Funktion, die uns viel inspiriert endete. Durch die Zeit, die wir C# 4 und 10 Visual Basic geliefert, wurden wir sehen Montage Beweise, sollte diese asynchrone weiter in der Zeile, und es war ein Problem, die wirklich benötigt, um auf die Language-Ebene gelöst werden."

Torgersen beschreibt den Core-Implementierung-Ansatz als ziemlich einfach. Die Lösung wurde auf "Anhalten und fortsetzen" die Ausführung von Code im Flug. Anstatt generierten Code in separaten Bits Hacken, verwendete das Team eine Technik, um "in an die richtigen Position im Code des Benutzers parachute". Der Ansatz bietet den Vorteil, die Struktur des ursprünglichen Quellcodes in vollem Umfang – und die Ergebnisse sind schwer zu behaupten, mit.

"Wir einen Schwanz überraschend kleinen Fehler, Inkonsistenzen hatten," sagt Torgersen.

Async-Entwicklung

Die neuen Features der asynchronen Programmierung in C# und Visual Basic kennzeichnen die jüngste in einer Reihe wichtiger evolutionäre Schritte für Microsofts Flaggschiff Programmiersprachen verwaltet. In den vergangenen Jahren haben die Sprachen über Aspekte der funktionalen und dynamischen Programmierung und vor kurzem den meisten asynchronen Programmierung getroffen. Wie Lisa Feigenbaum, Programmmanager in der Visual Studio-Gruppe bei Microsoft, erläutert wird, wurde die Anstrengungen unternommen, um diese Funktionen in einer Weise zu übernehmen, dass "das Format der einzelnen Sprachen passt optimal."

"Beispielsweise wurde dynamic Language Interop hinzugefügt Visual Basic unter Ausnutzung der späten Bindung Konstrukte, die bereits Teil der Sprache. Darüber hinaus in C# kam einen statischen Typ, dynamische, genannt", sagt Feigenbaum. "Der funktionalen Programmierung sprechen, wenn Sie Lambda-Ausdrücke Visual Basic hinzufügen, wir verwendet die vertraute Schlüsselwortsyntax mit Sub-Stecker Sub- und Function/End Function. Jedoch für C#, die weniger ausführlich, wir verwendet Symbole, entwerfen die Syntax mit ' = >'. Diese Designs helfen, jede Sprache seinen ursprünglichen Charakter beibehalten und Entwicklern vertraut bleiben, wie es wächst."

Wichtige neuer Funktionen hinzufügen, eine Programmiersprache ist nie eine triviale Angelegenheit. Feigenbaum beschreibt Sprachdesign als "sehr konservativ Prozess," betont wird, daß die Funktionen nicht hinzugefügt werden, bis sie genau richtig sind. Bei der asynchronen, basiert die neue Funktionalität auf Grundlagen eingeführt, mit der letzten Version von der.NET Framework.

"Beispielsweise die Vorgangsart, die hinzugefügt wurde, die Visual Studio vNext Async Designs bauen die.NET Framework.NET-4,"sagt Feigenbaum. "Mit dieser Stiftung, sowie zusätzliche Unterstützung des Frameworks, die in der nächsten Version hinzugefügt wird, konnten wir letztendlich eine Sprachsyntax sehr elegant entwerfen, der wir für Async in Visual Studio vNext zufrieden waren."

Heute können Entwickler mit der Async-CTP mit C# und Visual Basic kommen neuen Ressourcen vertraut zu arbeiten. In der Zwischenzeit Torgersen sagt Entwickler können man am besten für das Alter des Async vorbereiten tun: aufgabenbasierte geworden.

"Auch auf.NET 4, Task-Typen sind eine viel bessere Währung für asynchronen Aktivität als die älteren Muster, die wir haben. Weiterhin müssen Sie Callback-basiert sein, weil Sie Sprachunterstützung, aber auf eine elegantere Weise besitzen. Und alle Ihre Signaturen die neue aufgabenbasierte Muster folgen müssen bereitet Sie wunderschön für den Tag, wenn Sie mit nur einem einfachen 'Warten'-Ausdruck verbrauchen können."