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.