Asynchrone Programmiermodelle

Get Started. It's Free
or sign up with your email address
Rocket clouds
Asynchrone Programmiermodelle by Mind Map: Asynchrone Programmiermodelle

1. Window Runtime

1.1. Rückgabewert der WinRT-API

1.1.1. IAsyncOperation<T>

1.1.2. IAsyncAction

1.1.3. .StartAsTask()

1.2. Asynchron wird zur Norm

1.2.1. Libraries werden verstärkt um Async-Methoden erweitert

1.2.2. UI-Thread freigeben

1.2.2.1. für das längere, bessere und ruckelfreie durchsuchen der Bauklötzchen ;-)

1.3. Rückgabe

1.3.1. Task

1.3.1.1. Kontrollierbar

1.3.1.2. für Hilfsmethoden und Bibliotheken

1.3.2. void

1.3.2.1. "Fire and Forget"

1.3.2.2. Event-Handler

1.3.2.3. override void-Methoden

2. .NET Framework

2.1. Rückgabewert C#/VB.NET

2.1.1. Task<T>

2.1.1.1. Yielding

2.1.1.1.1. Task.Delay(ms)

2.1.1.1.2. Yield()

2.1.1.2. Background

2.1.1.2.1. await Task.Run(()=> {...});

2.1.1.3. Parallel

2.1.1.3.1. await Task.WhenAny(t1,t2)

2.1.1.3.2. await Task.WhenAll(t1,t2)

2.2. Asynchrone Methoden mit

2.2.1. Callbacks

2.2.1.1. Code Inside out

2.2.1.2. Asynchrone Methoden in Callback State machine transformieren

2.2.1.2.1. Transformation

2.2.1.2.2. Heap-allocated state machine

2.2.2. Abbruch mit

2.2.2.1. CancellationToken

2.2.2.1.1. CancellationTokenSource cts

2.2.2.2. OperationCanceledException

2.2.3. Fortschritt

2.2.3.1. IProgress

2.2.4. async

2.2.4.1. Rückgabewert der Methodensignatur muss vom Typ Task<T> sein

2.2.4.1.1. Wrapper

2.2.4.1.2. return-Wert muss nur T sein

2.2.4.2. macht die Methode Asynchron

2.2.5. await

2.2.5.1. Nicht in catch/finally verwenden

2.2.5.2. unter yield-Kontrolle

2.2.5.3. aufgerufene Methoden benötigen "awaiter pattern"

2.2.5.4. übernimmt das Callback

2.3. Vorteile

2.3.1. Vereinfachter Code

2.3.1.1. liest sich wie synchroner Code

2.3.2. Bessere Fehlerbehandlung

2.4. Herausforderungen

2.4.1. Overhead berücksichtigen

2.4.1.1. Gleiche Regeln wie bei der TPL

2.4.1.1.1. kleine Einheiten lohnen sich nicht immer

2.4.1.1.2. zuerst nachdenken

2.4.1.2. Kosten

2.4.1.2.1. Hierarchieaufrufe von div. Methoden

2.4.1.2.2. Garbage Collection

2.4.1.2.3. awaits minimieren

2.4.2. Synchronisation

2.4.2.1. WindowsFormSyncronisationContext

2.4.2.1.1. Control.BeginINvoke

2.4.2.2. DispatcherSynchronizationContext

2.4.2.2.1. Dispatcher.BeginInvoke

2.4.2.3. AspNetSynchronizationContext

2.4.2.4. await

2.4.2.4.1. fährt auf aktuellen SynchronisationContext weiter

2.4.3. Deadlook vermeiden

3. Javascript

3.1. verwendbar mit C#

3.1.1. Referenzierung von C#-Projekten in Javascript möglich

3.2. Promises

3.2.1. Async-Methoden sind automatisch promises

3.2.1.1. Weiterverarbeitung mit .then

3.2.1.1.1. .then(function (result) { //code für Darstellung; });

3.3. Alternativen

3.3.1. node

3.3.1.1. node-fibers

3.3.1.2. bald node.js native

3.3.2. tame.js

3.3.3. streamlinejs

3.3.4. Herausforderung

3.3.4.1. Wildwuchs begegnen

4. Ressourcen

4.1. MSDN Async

4.2. build 11

4.2.1. Future C#/VB.NET

4.2.2. The zen of async

4.2.3. Slides ASP.NET apps with async

4.2.4. Async in Win 8