Event-based Asynchronous Pattern (EAP)
Eintrag zuletzt aktualisiert am: 30.01.2013
Microsoft hat in .NET seit Version 1.0 Möglichkeiten implementiert, Multi-Threading (mit den Klassen im Namensraum
System.Threading) und asynchrone Aufrufe (mit BeginInvoke() und EndInvoke() in der
Delegate-Klasse) zu nutzen. BeginInvoke() erzeugt dabei einen Thread, mit EndInvoke() holt man das Ergebnis später ab. Microsoft nannte dies das
Asynchronous Programming Model (
APM). In
.NET 2.0 hat Microsoft das Event-based Asynchronous Pattern (EAP) eingeführt, bei dem eine Klasse ein Ereignis auslöste, wenn die asynchrone Bearbeitung fertig war. Ein Beispiel dazu ist DownloadStringAsync() in der Klasse
System.Net.WebClient. Mit
.NET 4.0 gab es dann eine allgemeine Abstraktion von Threads in Form von Tasks mit der
Task Parallel Library (
TPL) sowie
Parallel LINQ (
PLINQ). Die
TPL bot eine gute Unterstützung für asynchrone Aufrufe, einschließlich der Festlegung von Abarbeitungsketten (Continuations) und dem Abbruch von asynchrone Verarbeitungsprozessen (Cancellation). Dennoch verblieb auch mit
TPL für den Softwareentwickler die Notwendigkeit, den Programmcode erheblich umzustrukturieren, um ihn asynchron zu machen.