29
eyond Primzahlen: synchrone und parallele rogrammierung in der Praxis man Schacherl | softaware gmbh | @rschacherl

Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Embed Size (px)

DESCRIPTION

Ist Ihnen schon aufgefallen, dass alle Samples zum Thema Asynchronität und Parallelisierung Primzahlen berechnen? Viele Anwendungen haben aber ganz anders gelagerte Probleme – zum Beispiel datenorientierte Businessanwendungen. Roman Schacherl zeigt, wie asynchrone und parallele Programmierung Ihren Alltag in WPF, Web und Azure verändern kann.

Citation preview

Page 1: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Beyond Primzahlen:Asynchrone und parallele Programmierung in der Praxis

Roman Schacherl | softaware gmbh | @rschacherl

Page 2: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

© FOCUS.DE / REUTERS

Page 3: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Roman Schacherl

Page 4: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 5: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 6: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 7: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 8: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async

awaitTask Parallel Library

TaskTaskCompletionSource

Die Welt ist asynchron.Cloud

Services

Page 9: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

CLOUDAuf allen Ebenen…

WEBPC

Page 10: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Agenda

async / awaitBest Practice / Bad Practice

PraxisbeispieleWPF / MVVMASP.NET MVCWindows Azure

Page 11: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 12: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis
Page 13: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async / await

async / await verwaltet die Asynchronizität und erleichtert die Verwendung.Es werden aber keine automatischen Threads erzeugt!

Page 14: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async void

async void ist fire-and-forget!

Macht nur in Ausnahmefällen Sinn, zB bei Eventhandlern

Page 15: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async & synchr. Methoden

Beispiel © Stephen Toub, „Async‘ing Your Way to a Successful App with .NET“, //build 2013

Page 16: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async & synchr. Methoden

Beispiel © Stephen Toub, „Async‘ing Your Way to a Successful App with .NET“, //build 2013

Page 17: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

async & synchr. Methoden

Synchrone (CPU-intensive) Methoden (wenn möglich) nicht in einer Async-Methode „verstecken“!

Page 18: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

TaskCompletionSource

TaskCompletionSource<T> ermöglicht die Abbildung von Events auf Tasks

Page 19: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SZENARIO 1

WPF / MVVM-Anwendungmit async / await-Unterstützung

Page 20: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

WPF / MVVM

Async-Methoden in Entity Framework 6

CancellationToken in Async-Methoden vorsehen, falls die Operation abgebrochen werden kann

Page 21: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SZENARIO 2

ASP.NET MVC-Anwendungmit async / await-Unterstützung

Page 22: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Async Actions

Vermeiden von Skalierungsproblemen Ressourcen sparen

Serverseitiges Timeout mit CancellationToken

Page 23: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SZENARIO 3

ASP.NET MVC-Anwendungmit vielen Requests eines Users

Page 24: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SessionState

Falls eine Web-Anwendung Sessions einsetzt, werden standardmäßig keine Actions eines Benutzers parallel ausgeführt

SessionState-Attribut schafft Abhilfe

Page 25: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SZENARIO 4

Windows Azure Worker RoleAbarbeitung einer Queue

Page 26: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

Worker + Queue

Pattern für die Abarbeitung von Arbeitspaketen

z.B. Import aus externen Systemen

Leichte (auch automatisierte) Skalierbarkeit in Windows Azure

Standard-FeaturesDequeue-Count, Try/Retry, etc.

Page 27: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

SZENARIO 5

Traffic Manager:Parallelisierung im Großen

Page 28: Beyond Primzahlen: Asynchrone und parallele Programmierung in der Praxis

CLOUDAuf allen Ebenen…

WEBPC