EVENT DRIVEN
NODEJS
Donnerstag, 27. Juni 13
ÜBER MICH
‣ JavaScript Nerd
‣ C/C++/C# Entwickler
‣ Berliner
‣ Tech Startups
@mikebild / Software Engineer
Donnerstag, 27....
init()
setup()
run()
cleanup()
end()
sync
Donnerstag, 27. Juni 13
init()
setup()
run()
cleanup()
end()
sync
0
1
2
3
4
Donnerstag, 27. Juni 13
async
init()0
setup()1
run()2
cleanup()3
end()4
Donnerstag, 27. Juni 13
async
init()0 setup()1
run()2
cleanup()3
end()4
Donnerstag, 27. Juni 13
async
init()0 setup()1 run()2
cleanup()3
end()4
Donnerstag, 27. Juni 13
async
init()0 setup()1 run()2 cleanup()3
end()4
Donnerstag, 27. Juni 13
async
init()0 setup()1 run()2 cleanup()3 end()4
Donnerstag, 27. Juni 13
ASYNC !== POSITION
Donnerstag, 27. Juni 13
ASYNC === ZEIT
Donnerstag, 27. Juni 13
KONTROLLFLUSS === undefined
???
Donnerstag, 27. Juni 13
init(
setup(
run(
cleanup(
end()
)
)
)
)
Donnerstag, 27. Juni 13
???
Donnerstag, 27. Juni 13
CONTINUATION
???
Donnerstag, 27. Juni 13
CALLBACKS
CONTINUATION
???
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
‣ Funktionen sind Objekte
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
‣ Funktionen sind Objekte
‣ Variablenzuweisung
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
‣ Funktionen sind Objekte
‣ Variablenzuweisung
‣ Parameter
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
‣ Funktionen sind Objekte
‣ Variablenzuweisung
‣ Parameter
‣ Rückgabewert
Donnerstag, 27. Juni 13
FIRST-CLASS
FUNCTIONS
‣ Funktionen sind Objekte
‣ Variablenzuweisung
‣ Parameter
‣ Rückgabewert
‣ Funktionen haben
Eigensc...
FIRST-CLASS
FUNCTIONS
Donnerstag, 27. Juni 13
non-blocking
Donnerstag, 27. Juni 13
non-blocking
???
Donnerstag, 27. Juni 13
non-blocking
???
Donnerstag, 27. Juni 13
SCOPE
non-blocking
???
Donnerstag, 27. Juni 13
SCOPE
non-blocking
IMMEDIATE FUNCTIONS
???
Donnerstag, 27. Juni 13
SCOPE
non-blocking
IMMEDIATE FUNCTIONS
CLOSURES
???
Donnerstag, 27. Juni 13
<3 KONZEPTE
Donnerstag, 27. Juni 13
SCOPE
‣ Gültigkeitsbereich vonVariablen
‣ privat innerhalb von Funktionen
‣ das this innerhalb der Funktion
Donnerstag, 27...
IMMEDIATE
FUNCTIONS
Donnerstag, 27. Juni 13
IMMEDIATE
FUNCTIONS
Deklaration und unmittelbare Ausführung
Donnerstag, 27. Juni 13
CLOSURES
Donnerstag, 27. Juni 13
CLOSURES
‣ umschließen Gültigkeitsbereich für
Variablen
Donnerstag, 27. Juni 13
CLOSURES
‣ umschließen Gültigkeitsbereich für
Variablen
‣ „einfrieren“ von Werten inVariablen
Donnerstag, 27. Juni 13
CLOSURES
‣ umschließen Gültigkeitsbereich für
Variablen
‣ „einfrieren“ von Werten inVariablen
‣ privateVariablen
Donnersta...
CLOSURES
‣ umschließen Gültigkeitsbereich für
Variablen
‣ „einfrieren“ von Werten inVariablen
‣ privateVariablen
‣ „konfigu...
CLOSURES
SCOPE - privateVariablen
Donnerstag, 27. Juni 13
CLOSURES
„konfigurierbare“ Funktionen
Donnerstag, 27. Juni 13
SCOPE CLOSURE
???
Donnerstag, 27. Juni 13
SCOPE CLOSURE
YEAH!???
Donnerstag, 27. Juni 13
(RE)BIND SCOPE
Donnerstag, 27. Juni 13
(RE)BIND SCOPE
OUTER
Donnerstag, 27. Juni 13
(RE)BIND SCOPE
OUTER INNER
Donnerstag, 27. Juni 13
(RE)BIND SCOPE
OUTER INNER
Donnerstag, 27. Juni 13
BLOCKING
VS.
NON-BLOCKING
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
ARBEIT
Donnerstag, 27. Juni 13
WARTEN
ARBEIT
Donnerstag, 27. Juni 13
WARTEN
ARBEIT
Donnerstag, 27. Juni 13
WARTEN
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
FERTIG
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
BLOCKING
Donnerstag, 27. Juni 13
???
GESCHWINDIGKEIT
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
THREADS
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
THREADS
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
THREADS
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ ABER
THREADS
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ ABER
‣ hoher Aufwand
THREADS
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ ABER
‣ hoher Aufwand
‣ viel Koordination
THREADS
Donnerstag, 27. Juni 13
TEUER
Donnerstag, 27. Juni 13
IDEEN?
Donnerstag, 27. Juni 13
NEUER ABLAUF
Donnerstag, 27. Juni 13
NON-BLOCKING
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
Benachrichtigen Sie mich,
sobald Sie fertig sind.
Donnerstag, 27. Juni 13
EVENT DRIVEN
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
EVENT DRIVEN
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
EVENT DRIVEN
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ UND
EVENT DRIVEN
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ UND
‣ EINFACH
EVENT DRIVEN
Donnerstag, 27. Juni 13
‣ Reaktionsfähig
‣ Skalierbar
‣ UND
‣ EINFACH
‣ GÜNSTIG
EVENT DRIVEN
Donnerstag, 27. Juni 13
GESCHWINDIGKEIT?
Donnerstag, 27. Juni 13
I/O GESCHWINDIGKEIT
http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait
5ns 50ns 5ms 50ms
CPU-Regi...
WARTEN
Donnerstag, 27. Juni 13
NODE.JS
Donnerstag, 27. Juni 13
I/O MODULE
file, http, net ...
BLOCKING NON-BLOCKING
Donnerstag, 27. Juni 13
I/O MODULE
file, http, net ...
BLOCKING NON-BLOCKING
UNTERSCHIEDE
Donnerstag, 27. Juni 13
BLOCKING
Donnerstag, 27. Juni 13
BLOCKING
‣ Prozess blockiert während des Aufrufes
Donnerstag, 27. Juni 13
BLOCKING
‣ Prozess blockiert während des Aufrufes
‣ wird erst fortgesetzt, wenn Ergebnis verfügbar ist
Donnerstag, 27. Jun...
NON-BLOCKING
Donnerstag, 27. Juni 13
NON-BLOCKING
‣ Prozess kann weiter arbeiten
Donnerstag, 27. Juni 13
NON-BLOCKING
‣ Prozess kann weiter arbeiten
‣ während die Daten im Hintergrund geladen
werden
Donnerstag, 27. Juni 13
NON-BLOCKING I/O
Donnerstag, 27. Juni 13
NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
Donnerstag, 27. Juni 13
NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programm...
NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programm...
NON-BLOCKING I/O
‣ Funktionen ohne „direkte“ Rückgabewerte
‣ „callbacks“ sind „continuations“ zur Fortsetzung
des Programm...
EVENTS
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
‣ Frontend
‣ user interaction-events: mouse*, key*
‣ timer events: setTimeout
Donnerstag, 27. Juni 13
‣ Frontend
‣ user interaction-events: mouse*, key*
‣ timer events: setTimeout
Donnerstag, 27. Juni 13
‣ Frontend
‣ user interaction-events: mouse*, key*
‣ timer events: setTimeout
‣ Backend
‣ I/O-events: networking, filesyste...
EVENTS
Donnerstag, 27. Juni 13
‣ Ereignisse auf die reagiert werden
EVENTS
Donnerstag, 27. Juni 13
‣ Ereignisse auf die reagiert werden
‣ viele Sender (üblicherweise nur einer)
EVENTS
Donnerstag, 27. Juni 13
‣ Ereignisse auf die reagiert werden
‣ viele Sender (üblicherweise nur einer)
‣ viele Empfänger
EVENTS
Donnerstag, 27. Jun...
EVENT HANDLING
Donnerstag, 27. Juni 13
callback(DATA)
Donnerstag, 27. Juni 13
‣ vereinfachte Form der Event-Verarbeitung
‣ wird anstelle eines return-Wertes aufgerufen
‣ NODE.JS Konvention:
function c...
EVENT EMITTER
Donnerstag, 27. Juni 13
‣ Event-Quelle und Dispatcher
‣ Empfänger werden mit on('NAME', callback)
angemeldet
‣ Events werden mit emit() ausgelöst
...
EVENT EMITTER
Donnerstag, 27. Juni 13
EVENT-LOOP
ARCHITEKTUR
Donnerstag, 27. Juni 13
‣Event-Handler registrieren
‣Anwendung starten
1
Bearbeitet
„lang laufenden“ Aufgaben
2
WORKER
THREADS
WORKER
THREADS
WORK...
‣Event-Loop startet
‣wartet auf Events
3
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADS
WORKER
THREADS
WORKER
THREADS
Donnerstag, ...
Meldet „Daten“-
Rückgaben als Events
4
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADSWORKER
THREADSWORKER
THREADS
➡ fs.data
➡ fs.e...
Dispatcher führt
für jeden EVENT
den registrierten
CALLBACK im
MAIN PROZESS aus
5
EVENT-LOOP
MAIN
PROCESS
WORKER
THREADSWO...
✓in nur einem Prozess
✓Single-Thread innerhalb von NODE.JS
✓keine Parallelisierung, sondern Non-Blocking
✓Event-Verarbeitu...
BEISPIEL
WEB SERVER
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
NEVER BLOCK
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
YEAH
Donnerstag, 27. Juni 13
EVENT EMITTER
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
STREAMS
Donnerstag, 27. Juni 13
CHILD-PROZESS
Donnerstag, 27. Juni 13
WENNS MAL LÄNGER
DAUERT
Donnerstag, 27. Juni 13
WENNS MAL LÄNGER
DAUERT
✓„split and defer“ - setTimeout(continuation, 0);
Donnerstag, 27. Juni 13
WENNS MAL LÄNGER
DAUERT
✓„split and defer“ - setTimeout(continuation, 0);
✓EventEmitter
Donnerstag, 27. Juni 13
WENNS MAL LÄNGER
DAUERT
✓„split and defer“ - setTimeout(continuation, 0);
✓EventEmitter
✓child-process
Donnerstag, 27. Jun...
WENNS MAL LÄNGER
DAUERT
✓„split and defer“ - setTimeout(continuation, 0);
✓EventEmitter
✓child-process
✓STREAMS
Donnerstag...
BEISPIEL
Donnerstag, 27. Juni 13
Donnerstag, 27. Juni 13
‣ Ein Gast betritt den Empfang eines Hotels
Donnerstag, 27. Juni 13
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
Donnerstag, 27. Juni 13
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
Do...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
‣ Ein Gast betritt den Empfang eines Hotels
‣ Rezeptionist begrüßt den Gast
‣ Rezeptionist übergibt ein Anmeldeformular
‣ ...
SYNC
Donnerstag, 27. Juni 13
SYNC
Donnerstag, 27. Juni 13
‣ nur 1 Gast je Rezeptionisten
SYNC
Donnerstag, 27. Juni 13
‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
SYNC
Donnerstag, 27. Juni 13
‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast war...
‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast war...
‣ nur 1 Gast je Rezeptionisten
‣ X gleichzeitige Gäste brauchen X Rezeptionisten
(= Threads)
‣ Rezeptionisten und Gast war...
ASYNC
Donnerstag, 27. Juni 13
ASYNC
Donnerstag, 27. Juni 13
‣ nur 1 Rezeptionist für X Gäste
ASYNC
Donnerstag, 27. Juni 13
‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
ASYNC
Donnersta...
‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktione...
‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktione...
‣ nur 1 Rezeptionist für X Gäste
‣ zu viele Gäste führen nur zur langsameren
Ausführung nicht zur Blocking
‣ Lange Aktione...
ABER
Donnerstag, 27. Juni 13
KOMPLIZIERT
Donnerstag, 27. Juni 13
CALLBACK HELL
Donnerstag, 27. Juni 13
https://npmjs.org/package/cflow
FLOW
Donnerstag, 27. Juni 13
https://github.com/creationix/step
STEP
Donnerstag, 27. Juni 13
https://github.com/creationix/step
STEP
Donnerstag, 27. Juni 13
COMPLEX
EVENT
PROCESSING
Donnerstag, 27. Juni 13
REACTIVE EXTENSIONS
IN
OUT
LOGIK
Donnerstag, 27. Juni 13
ZUSTAND
‣ Array von Events
‣ Event Store
...
{ msg: „bar“ }
{ msg: „foo“ }
{ msg: „driven“ }
{ msg: „event“ }
{ msg: „star...
EVENTS SPEICHERN
Donnerstag, 27. Juni 13
ABFRAGE
Donnerstag, 27. Juni 13
ABFRAGE
pattern matching
Donnerstag, 27. Juni 13
MATCH & FOLD
Donnerstag, 27. Juni 13
MORGEN
Donnerstag, 27. Juni 13
EVENT STORE
Donnerstag, 27. Juni 13
SEDA
Staged Event Driven Architecture
Donnerstag, 27. Juni 13
DANKE
Donnerstag, 27. Juni 13
Nächste SlideShare
Wird geladen in …5
×

Event Driven - Node.JS

1.001 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.001
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
6
Aktionen
Geteilt
0
Downloads
7
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Event Driven - Node.JS

  1. 1. EVENT DRIVEN NODEJS Donnerstag, 27. Juni 13
  2. 2. ÜBER MICH ‣ JavaScript Nerd ‣ C/C++/C# Entwickler ‣ Berliner ‣ Tech Startups @mikebild / Software Engineer Donnerstag, 27. Juni 13
  3. 3. init() setup() run() cleanup() end() sync Donnerstag, 27. Juni 13
  4. 4. init() setup() run() cleanup() end() sync 0 1 2 3 4 Donnerstag, 27. Juni 13
  5. 5. async init()0 setup()1 run()2 cleanup()3 end()4 Donnerstag, 27. Juni 13
  6. 6. async init()0 setup()1 run()2 cleanup()3 end()4 Donnerstag, 27. Juni 13
  7. 7. async init()0 setup()1 run()2 cleanup()3 end()4 Donnerstag, 27. Juni 13
  8. 8. async init()0 setup()1 run()2 cleanup()3 end()4 Donnerstag, 27. Juni 13
  9. 9. async init()0 setup()1 run()2 cleanup()3 end()4 Donnerstag, 27. Juni 13
  10. 10. ASYNC !== POSITION Donnerstag, 27. Juni 13
  11. 11. ASYNC === ZEIT Donnerstag, 27. Juni 13
  12. 12. KONTROLLFLUSS === undefined ??? Donnerstag, 27. Juni 13
  13. 13. init( setup( run( cleanup( end() ) ) ) ) Donnerstag, 27. Juni 13
  14. 14. ??? Donnerstag, 27. Juni 13
  15. 15. CONTINUATION ??? Donnerstag, 27. Juni 13
  16. 16. CALLBACKS CONTINUATION ??? Donnerstag, 27. Juni 13
  17. 17. FIRST-CLASS FUNCTIONS Donnerstag, 27. Juni 13
  18. 18. FIRST-CLASS FUNCTIONS ‣ Funktionen sind Objekte Donnerstag, 27. Juni 13
  19. 19. FIRST-CLASS FUNCTIONS ‣ Funktionen sind Objekte ‣ Variablenzuweisung Donnerstag, 27. Juni 13
  20. 20. FIRST-CLASS FUNCTIONS ‣ Funktionen sind Objekte ‣ Variablenzuweisung ‣ Parameter Donnerstag, 27. Juni 13
  21. 21. FIRST-CLASS FUNCTIONS ‣ Funktionen sind Objekte ‣ Variablenzuweisung ‣ Parameter ‣ Rückgabewert Donnerstag, 27. Juni 13
  22. 22. FIRST-CLASS FUNCTIONS ‣ Funktionen sind Objekte ‣ Variablenzuweisung ‣ Parameter ‣ Rückgabewert ‣ Funktionen haben Eigenschaften und Methoden Donnerstag, 27. Juni 13
  23. 23. FIRST-CLASS FUNCTIONS Donnerstag, 27. Juni 13
  24. 24. non-blocking Donnerstag, 27. Juni 13
  25. 25. non-blocking ??? Donnerstag, 27. Juni 13
  26. 26. non-blocking ??? Donnerstag, 27. Juni 13
  27. 27. SCOPE non-blocking ??? Donnerstag, 27. Juni 13
  28. 28. SCOPE non-blocking IMMEDIATE FUNCTIONS ??? Donnerstag, 27. Juni 13
  29. 29. SCOPE non-blocking IMMEDIATE FUNCTIONS CLOSURES ??? Donnerstag, 27. Juni 13
  30. 30. <3 KONZEPTE Donnerstag, 27. Juni 13
  31. 31. SCOPE ‣ Gültigkeitsbereich vonVariablen ‣ privat innerhalb von Funktionen ‣ das this innerhalb der Funktion Donnerstag, 27. Juni 13
  32. 32. IMMEDIATE FUNCTIONS Donnerstag, 27. Juni 13
  33. 33. IMMEDIATE FUNCTIONS Deklaration und unmittelbare Ausführung Donnerstag, 27. Juni 13
  34. 34. CLOSURES Donnerstag, 27. Juni 13
  35. 35. CLOSURES ‣ umschließen Gültigkeitsbereich für Variablen Donnerstag, 27. Juni 13
  36. 36. CLOSURES ‣ umschließen Gültigkeitsbereich für Variablen ‣ „einfrieren“ von Werten inVariablen Donnerstag, 27. Juni 13
  37. 37. CLOSURES ‣ umschließen Gültigkeitsbereich für Variablen ‣ „einfrieren“ von Werten inVariablen ‣ privateVariablen Donnerstag, 27. Juni 13
  38. 38. CLOSURES ‣ umschließen Gültigkeitsbereich für Variablen ‣ „einfrieren“ von Werten inVariablen ‣ privateVariablen ‣ „konfigurierbare“ Funktionen Donnerstag, 27. Juni 13
  39. 39. CLOSURES SCOPE - privateVariablen Donnerstag, 27. Juni 13
  40. 40. CLOSURES „konfigurierbare“ Funktionen Donnerstag, 27. Juni 13
  41. 41. SCOPE CLOSURE ??? Donnerstag, 27. Juni 13
  42. 42. SCOPE CLOSURE YEAH!??? Donnerstag, 27. Juni 13
  43. 43. (RE)BIND SCOPE Donnerstag, 27. Juni 13
  44. 44. (RE)BIND SCOPE OUTER Donnerstag, 27. Juni 13
  45. 45. (RE)BIND SCOPE OUTER INNER Donnerstag, 27. Juni 13
  46. 46. (RE)BIND SCOPE OUTER INNER Donnerstag, 27. Juni 13
  47. 47. BLOCKING VS. NON-BLOCKING Donnerstag, 27. Juni 13
  48. 48. Donnerstag, 27. Juni 13
  49. 49. Donnerstag, 27. Juni 13
  50. 50. ARBEIT Donnerstag, 27. Juni 13
  51. 51. WARTEN ARBEIT Donnerstag, 27. Juni 13
  52. 52. WARTEN ARBEIT Donnerstag, 27. Juni 13
  53. 53. WARTEN Donnerstag, 27. Juni 13
  54. 54. Donnerstag, 27. Juni 13
  55. 55. FERTIG Donnerstag, 27. Juni 13
  56. 56. Donnerstag, 27. Juni 13
  57. 57. Donnerstag, 27. Juni 13
  58. 58. Donnerstag, 27. Juni 13
  59. 59. BLOCKING Donnerstag, 27. Juni 13
  60. 60. ??? GESCHWINDIGKEIT Donnerstag, 27. Juni 13
  61. 61. THREADS Donnerstag, 27. Juni 13
  62. 62. THREADS Donnerstag, 27. Juni 13
  63. 63. THREADS Donnerstag, 27. Juni 13
  64. 64. THREADS Donnerstag, 27. Juni 13
  65. 65. THREADS Donnerstag, 27. Juni 13
  66. 66. THREADS Donnerstag, 27. Juni 13
  67. 67. THREADS Donnerstag, 27. Juni 13
  68. 68. THREADS Donnerstag, 27. Juni 13
  69. 69. THREADS Donnerstag, 27. Juni 13
  70. 70. THREADS Donnerstag, 27. Juni 13
  71. 71. THREADS Donnerstag, 27. Juni 13
  72. 72. THREADS Donnerstag, 27. Juni 13
  73. 73. THREADS Donnerstag, 27. Juni 13
  74. 74. THREADS Donnerstag, 27. Juni 13
  75. 75. THREADS Donnerstag, 27. Juni 13
  76. 76. THREADS Donnerstag, 27. Juni 13
  77. 77. THREADS Donnerstag, 27. Juni 13
  78. 78. THREADS Donnerstag, 27. Juni 13
  79. 79. THREADS Donnerstag, 27. Juni 13
  80. 80. THREADS Donnerstag, 27. Juni 13
  81. 81. THREADS Donnerstag, 27. Juni 13
  82. 82. ‣ Reaktionsfähig THREADS Donnerstag, 27. Juni 13
  83. 83. ‣ Reaktionsfähig ‣ Skalierbar THREADS Donnerstag, 27. Juni 13
  84. 84. ‣ Reaktionsfähig ‣ Skalierbar ‣ ABER THREADS Donnerstag, 27. Juni 13
  85. 85. ‣ Reaktionsfähig ‣ Skalierbar ‣ ABER ‣ hoher Aufwand THREADS Donnerstag, 27. Juni 13
  86. 86. ‣ Reaktionsfähig ‣ Skalierbar ‣ ABER ‣ hoher Aufwand ‣ viel Koordination THREADS Donnerstag, 27. Juni 13
  87. 87. TEUER Donnerstag, 27. Juni 13
  88. 88. IDEEN? Donnerstag, 27. Juni 13
  89. 89. NEUER ABLAUF Donnerstag, 27. Juni 13
  90. 90. NON-BLOCKING Donnerstag, 27. Juni 13
  91. 91. Donnerstag, 27. Juni 13
  92. 92. Donnerstag, 27. Juni 13
  93. 93. Donnerstag, 27. Juni 13
  94. 94. Donnerstag, 27. Juni 13
  95. 95. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  96. 96. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  97. 97. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  98. 98. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  99. 99. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  100. 100. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  101. 101. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  102. 102. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  103. 103. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  104. 104. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  105. 105. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  106. 106. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  107. 107. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  108. 108. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  109. 109. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  110. 110. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  111. 111. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  112. 112. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  113. 113. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  114. 114. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  115. 115. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  116. 116. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  117. 117. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  118. 118. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  119. 119. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  120. 120. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  121. 121. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  122. 122. Benachrichtigen Sie mich, sobald Sie fertig sind. Donnerstag, 27. Juni 13
  123. 123. EVENT DRIVEN Donnerstag, 27. Juni 13
  124. 124. ‣ Reaktionsfähig EVENT DRIVEN Donnerstag, 27. Juni 13
  125. 125. ‣ Reaktionsfähig ‣ Skalierbar EVENT DRIVEN Donnerstag, 27. Juni 13
  126. 126. ‣ Reaktionsfähig ‣ Skalierbar ‣ UND EVENT DRIVEN Donnerstag, 27. Juni 13
  127. 127. ‣ Reaktionsfähig ‣ Skalierbar ‣ UND ‣ EINFACH EVENT DRIVEN Donnerstag, 27. Juni 13
  128. 128. ‣ Reaktionsfähig ‣ Skalierbar ‣ UND ‣ EINFACH ‣ GÜNSTIG EVENT DRIVEN Donnerstag, 27. Juni 13
  129. 129. GESCHWINDIGKEIT? Donnerstag, 27. Juni 13
  130. 130. I/O GESCHWINDIGKEIT http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait 5ns 50ns 5ms 50ms CPU-Register 0.33ns L1-Cache 1ns L2-Cache 4.7ns RAM 83ns HDD-Seek 13.7ms NETWORK 80ms Donnerstag, 27. Juni 13
  131. 131. WARTEN Donnerstag, 27. Juni 13
  132. 132. NODE.JS Donnerstag, 27. Juni 13
  133. 133. I/O MODULE file, http, net ... BLOCKING NON-BLOCKING Donnerstag, 27. Juni 13
  134. 134. I/O MODULE file, http, net ... BLOCKING NON-BLOCKING UNTERSCHIEDE Donnerstag, 27. Juni 13
  135. 135. BLOCKING Donnerstag, 27. Juni 13
  136. 136. BLOCKING ‣ Prozess blockiert während des Aufrufes Donnerstag, 27. Juni 13
  137. 137. BLOCKING ‣ Prozess blockiert während des Aufrufes ‣ wird erst fortgesetzt, wenn Ergebnis verfügbar ist Donnerstag, 27. Juni 13
  138. 138. NON-BLOCKING Donnerstag, 27. Juni 13
  139. 139. NON-BLOCKING ‣ Prozess kann weiter arbeiten Donnerstag, 27. Juni 13
  140. 140. NON-BLOCKING ‣ Prozess kann weiter arbeiten ‣ während die Daten im Hintergrund geladen werden Donnerstag, 27. Juni 13
  141. 141. NON-BLOCKING I/O Donnerstag, 27. Juni 13
  142. 142. NON-BLOCKING I/O ‣ Funktionen ohne „direkte“ Rückgabewerte Donnerstag, 27. Juni 13
  143. 143. NON-BLOCKING I/O ‣ Funktionen ohne „direkte“ Rückgabewerte ‣ „callbacks“ sind „continuations“ zur Fortsetzung des Programmablaufs Donnerstag, 27. Juni 13
  144. 144. NON-BLOCKING I/O ‣ Funktionen ohne „direkte“ Rückgabewerte ‣ „callbacks“ sind „continuations“ zur Fortsetzung des Programmablaufs ‣ Background-Tasks machen die Arbeit Donnerstag, 27. Juni 13
  145. 145. NON-BLOCKING I/O ‣ Funktionen ohne „direkte“ Rückgabewerte ‣ „callbacks“ sind „continuations“ zur Fortsetzung des Programmablaufs ‣ Background-Tasks machen die Arbeit ‣ keine Wartezeit im Programmablauf Donnerstag, 27. Juni 13
  146. 146. EVENTS Donnerstag, 27. Juni 13
  147. 147. Donnerstag, 27. Juni 13
  148. 148. ‣ Frontend ‣ user interaction-events: mouse*, key* ‣ timer events: setTimeout Donnerstag, 27. Juni 13
  149. 149. ‣ Frontend ‣ user interaction-events: mouse*, key* ‣ timer events: setTimeout Donnerstag, 27. Juni 13
  150. 150. ‣ Frontend ‣ user interaction-events: mouse*, key* ‣ timer events: setTimeout ‣ Backend ‣ I/O-events: networking, filesystem ‣ custom-events Donnerstag, 27. Juni 13
  151. 151. EVENTS Donnerstag, 27. Juni 13
  152. 152. ‣ Ereignisse auf die reagiert werden EVENTS Donnerstag, 27. Juni 13
  153. 153. ‣ Ereignisse auf die reagiert werden ‣ viele Sender (üblicherweise nur einer) EVENTS Donnerstag, 27. Juni 13
  154. 154. ‣ Ereignisse auf die reagiert werden ‣ viele Sender (üblicherweise nur einer) ‣ viele Empfänger EVENTS Donnerstag, 27. Juni 13
  155. 155. EVENT HANDLING Donnerstag, 27. Juni 13
  156. 156. callback(DATA) Donnerstag, 27. Juni 13
  157. 157. ‣ vereinfachte Form der Event-Verarbeitung ‣ wird anstelle eines return-Wertes aufgerufen ‣ NODE.JS Konvention: function callback(err, data) {} callback(DATA) Donnerstag, 27. Juni 13
  158. 158. EVENT EMITTER Donnerstag, 27. Juni 13
  159. 159. ‣ Event-Quelle und Dispatcher ‣ Empfänger werden mit on('NAME', callback) angemeldet ‣ Events werden mit emit() ausgelöst ‣ Events werden nur an die angemeldeten Empfänger im Event-Emitter gesendet EVENT EMITTER Donnerstag, 27. Juni 13
  160. 160. EVENT EMITTER Donnerstag, 27. Juni 13
  161. 161. EVENT-LOOP ARCHITEKTUR Donnerstag, 27. Juni 13
  162. 162. ‣Event-Handler registrieren ‣Anwendung starten 1 Bearbeitet „lang laufenden“ Aufgaben 2 WORKER THREADS WORKER THREADS WORKER THREADS MAIN PROCESS C++Thread-Pool Donnerstag, 27. Juni 13
  163. 163. ‣Event-Loop startet ‣wartet auf Events 3 EVENT-LOOP MAIN PROCESS WORKER THREADS WORKER THREADS WORKER THREADS Donnerstag, 27. Juni 13
  164. 164. Meldet „Daten“- Rückgaben als Events 4 EVENT-LOOP MAIN PROCESS WORKER THREADSWORKER THREADSWORKER THREADS ➡ fs.data ➡ fs.end ➡http.request ➡ ... ➡ ... EVENT QUEUE Donnerstag, 27. Juni 13
  165. 165. Dispatcher führt für jeden EVENT den registrierten CALLBACK im MAIN PROZESS aus 5 EVENT-LOOP MAIN PROCESS WORKER THREADSWORKER THREADSWORKER THREADS ➡ fs.data ➡ fs.end ➡http.request EVENT QUEUE DISPATCH Donnerstag, 27. Juni 13
  166. 166. ✓in nur einem Prozess ✓Single-Thread innerhalb von NODE.JS ✓keine Parallelisierung, sondern Non-Blocking ✓Event-Verarbeitung in Reihenfolge der Erzeugung ✓einfaches Modell ✓Skalierung über separate Prozesse (CPU-Intensive Tasks) ✓zwingt zum asynchronem Denken und Code EVENT LOOP Donnerstag, 27. Juni 13
  167. 167. BEISPIEL WEB SERVER Donnerstag, 27. Juni 13
  168. 168. Donnerstag, 27. Juni 13
  169. 169. NEVER BLOCK Donnerstag, 27. Juni 13
  170. 170. Donnerstag, 27. Juni 13
  171. 171. YEAH Donnerstag, 27. Juni 13
  172. 172. EVENT EMITTER Donnerstag, 27. Juni 13
  173. 173. Donnerstag, 27. Juni 13
  174. 174. STREAMS Donnerstag, 27. Juni 13
  175. 175. CHILD-PROZESS Donnerstag, 27. Juni 13
  176. 176. WENNS MAL LÄNGER DAUERT Donnerstag, 27. Juni 13
  177. 177. WENNS MAL LÄNGER DAUERT ✓„split and defer“ - setTimeout(continuation, 0); Donnerstag, 27. Juni 13
  178. 178. WENNS MAL LÄNGER DAUERT ✓„split and defer“ - setTimeout(continuation, 0); ✓EventEmitter Donnerstag, 27. Juni 13
  179. 179. WENNS MAL LÄNGER DAUERT ✓„split and defer“ - setTimeout(continuation, 0); ✓EventEmitter ✓child-process Donnerstag, 27. Juni 13
  180. 180. WENNS MAL LÄNGER DAUERT ✓„split and defer“ - setTimeout(continuation, 0); ✓EventEmitter ✓child-process ✓STREAMS Donnerstag, 27. Juni 13
  181. 181. BEISPIEL Donnerstag, 27. Juni 13
  182. 182. Donnerstag, 27. Juni 13
  183. 183. ‣ Ein Gast betritt den Empfang eines Hotels Donnerstag, 27. Juni 13
  184. 184. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast Donnerstag, 27. Juni 13
  185. 185. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular Donnerstag, 27. Juni 13
  186. 186. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular Donnerstag, 27. Juni 13
  187. 187. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen Donnerstag, 27. Juni 13
  188. 188. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen Donnerstag, 27. Juni 13
  189. 189. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen ‣ Der Gast füllt die Formulare aus Donnerstag, 27. Juni 13
  190. 190. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen ‣ Der Gast füllt die Formulare aus ‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist Donnerstag, 27. Juni 13
  191. 191. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen ‣ Der Gast füllt die Formulare aus ‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist Donnerstag, 27. Juni 13
  192. 192. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen ‣ Der Gast füllt die Formulare aus ‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist ‣ Rezeptionist überprüft die erhaltenen Formulare Donnerstag, 27. Juni 13
  193. 193. ‣ Ein Gast betritt den Empfang eines Hotels ‣ Rezeptionist begrüßt den Gast ‣ Rezeptionist übergibt ein Anmeldeformular ‣ Rezeptionist übergibt ein Zahlungsformular ‣ Rezeptionist kann weitere Gäste empfangen ‣ Der Gast füllt die Formulare aus ‣ Der Gast übergibt die ausgefüllten Formulare an den Rezeptionist ‣ Rezeptionist überprüft die erhaltenen Formulare ‣ Gast bekommt seinen Zimmerschlüssel, oder muss das/die Formulare nochmals ausfüllen Donnerstag, 27. Juni 13
  194. 194. SYNC Donnerstag, 27. Juni 13
  195. 195. SYNC Donnerstag, 27. Juni 13
  196. 196. ‣ nur 1 Gast je Rezeptionisten SYNC Donnerstag, 27. Juni 13
  197. 197. ‣ nur 1 Gast je Rezeptionisten ‣ X gleichzeitige Gäste brauchen X Rezeptionisten (= Threads) SYNC Donnerstag, 27. Juni 13
  198. 198. ‣ nur 1 Gast je Rezeptionisten ‣ X gleichzeitige Gäste brauchen X Rezeptionisten (= Threads) ‣ Rezeptionisten und Gast warten (= Locking) SYNC Donnerstag, 27. Juni 13
  199. 199. ‣ nur 1 Gast je Rezeptionisten ‣ X gleichzeitige Gäste brauchen X Rezeptionisten (= Threads) ‣ Rezeptionisten und Gast warten (= Locking) ‣ wenn mehr Gäste als Rezeptionisten: Warteschlange am Eingang SYNC Donnerstag, 27. Juni 13
  200. 200. ‣ nur 1 Gast je Rezeptionisten ‣ X gleichzeitige Gäste brauchen X Rezeptionisten (= Threads) ‣ Rezeptionisten und Gast warten (= Locking) ‣ wenn mehr Gäste als Rezeptionisten: Warteschlange am Eingang ‣ oder ständig "schlafende" Rezeptionisten SYNC Donnerstag, 27. Juni 13
  201. 201. ASYNC Donnerstag, 27. Juni 13
  202. 202. ASYNC Donnerstag, 27. Juni 13
  203. 203. ‣ nur 1 Rezeptionist für X Gäste ASYNC Donnerstag, 27. Juni 13
  204. 204. ‣ nur 1 Rezeptionist für X Gäste ‣ zu viele Gäste führen nur zur langsameren Ausführung nicht zur Blocking ASYNC Donnerstag, 27. Juni 13
  205. 205. ‣ nur 1 Rezeptionist für X Gäste ‣ zu viele Gäste führen nur zur langsameren Ausführung nicht zur Blocking ‣ Lange Aktionen werden von Background-Services erledigt ASYNC Donnerstag, 27. Juni 13
  206. 206. ‣ nur 1 Rezeptionist für X Gäste ‣ zu viele Gäste führen nur zur langsameren Ausführung nicht zur Blocking ‣ Lange Aktionen werden von Background-Services erledigt ‣ jegliche Aktion wird über Events ausgelöst ASYNC Donnerstag, 27. Juni 13
  207. 207. ‣ nur 1 Rezeptionist für X Gäste ‣ zu viele Gäste führen nur zur langsameren Ausführung nicht zur Blocking ‣ Lange Aktionen werden von Background-Services erledigt ‣ jegliche Aktion wird über Events ausgelöst ‣ Rezeptionisten sind nicht untätig ASYNC Donnerstag, 27. Juni 13
  208. 208. ABER Donnerstag, 27. Juni 13
  209. 209. KOMPLIZIERT Donnerstag, 27. Juni 13
  210. 210. CALLBACK HELL Donnerstag, 27. Juni 13
  211. 211. https://npmjs.org/package/cflow FLOW Donnerstag, 27. Juni 13
  212. 212. https://github.com/creationix/step STEP Donnerstag, 27. Juni 13
  213. 213. https://github.com/creationix/step STEP Donnerstag, 27. Juni 13
  214. 214. COMPLEX EVENT PROCESSING Donnerstag, 27. Juni 13
  215. 215. REACTIVE EXTENSIONS IN OUT LOGIK Donnerstag, 27. Juni 13
  216. 216. ZUSTAND ‣ Array von Events ‣ Event Store ... { msg: „bar“ } { msg: „foo“ } { msg: „driven“ } { msg: „event“ } { msg: „start“ }0 1 2 3 4 Donnerstag, 27. Juni 13
  217. 217. EVENTS SPEICHERN Donnerstag, 27. Juni 13
  218. 218. ABFRAGE Donnerstag, 27. Juni 13
  219. 219. ABFRAGE pattern matching Donnerstag, 27. Juni 13
  220. 220. MATCH & FOLD Donnerstag, 27. Juni 13
  221. 221. MORGEN Donnerstag, 27. Juni 13
  222. 222. EVENT STORE Donnerstag, 27. Juni 13
  223. 223. SEDA Staged Event Driven Architecture Donnerstag, 27. Juni 13
  224. 224. DANKE Donnerstag, 27. Juni 13

×