Top Banner
@petabridge Petabridge.com @AkkaDotNet - #ProgNet15 Andrew Skotzko Cofounder — Petabridge
73
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

@AkkaDotNet - #ProgNet15

Andrew  Skotzko  Co-­‐founder  —  Petabridge  

Page 2: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What  do  you  want?  

Page 3: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What You’ll Get Today

•  Understand actor model •  New possibilities

•  Hands-on: learn Akka.NET fundamentals

•  Glimpse where this could take you

Page 4: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Why  should  we  care  about  

concurrency?  

Page 5: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

1970  -­‐  2005  

Page 6: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 7: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 8: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 9: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 10: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 11: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 12: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

TANSTAAFL  “There  ain’t  no  such  thing  as  a  free  lunch.”  —R.  A.  Heinlein,  The  Moon  Is  a  Harsh  Mistress  

Page 13: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What  the  hell  are  you  talking  about?  

Page 14: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Concurrency.  

We  needs  it.  

Page 15: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

So  why  is  this  hard?  

Page 16: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

How to Write Multithreaded Code

Page 17: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Shared State Programming Sucks (Illustrated)

Page 18: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Random?

•  .NET 4.0: TPL (2010) •  .NET 4.5: async/await (2012)

Page 19: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Is there a better way? THERE MUST BE! THERE.  MUST.  BE.  A.  BETTER.  WAY!  

Page 20: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Warning! Mind Blowingly Different

Programming Style Ahead!

Page 21: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Warning! Mind Blowingly Different Programming Style Ahead!

Page 22: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

The Actor Model

Page 23: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What  is  the  actor  model?  

Page 24: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Everything  is  an  actor.  

Page 25: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 26: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 27: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

3 Core Abilities

1.  Send  messages  2. Create  other  actors  3. Change  behavior  

Page 28: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Messages

Page 29: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actors work by passing each other messages

Page 30: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Message passing in action

Page 31: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

BUZZWORD  BINGO!  

Page 32: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Example Akka.NET Message

Page 33: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actors send messages to addresses

Page 34: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actor addresses have location transparency

Page 35: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Which means…

Page 36: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 37: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 38: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

ReactiveManifesto.org

Page 39: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What is Akka.NET?

Page 40: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Battle-Tested (JVM)

Page 41: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

This is an actor

Page 42: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

These are messages

Page 43: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actors run on threads

Page 44: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actors are lazy

Page 45: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Process messages one at a time

Page 46: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

The circle of life

Page 47: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Page 48: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Hierarchies

Page 49: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Supervision

Page 50: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Switchable Behavior

Page 51: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

And Can Form Highly Available Systems

Page 52: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actors    Vs.  

C#  Classes  

Page 53: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

What’s  this  give  me?  

Page 54: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Where can I use this? •  Analytics systems •  Marketing automation •  Multi-player games •  Device / IoT tracking •  Alerting & monitoring systems •  Recommendation engines •  Dynamic pricing •  Reactive UI

Page 55: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

DEMO  

Page 56: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

10min  break  

Page 57: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

EXERCISE:  Port  Tail  from  *nix  to  Windows.  

Page 58: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Materials  haps://petabridge.com/cheatsheet  

Page 59: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Make  ActorSystem  +  First  Actors  

Page 60: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Define  first  messages  

Page 61: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Props  &  IActorRefs  

Page 62: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Hierarchies  &  Child  Actors  

Page 63: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Hierarchies pt. deux

Page 64: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Character Actor Pattern

Page 65: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

ActorSelecgon  

Page 66: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

ActorSelection == selection by address

Page 67: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actor  Lifecycle  

Page 68: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actor lifecycle

Page 69: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Actor lifecycle

Page 70: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Next Steps

1)  Use  your  cheatsheet!  2)  Finish  Bootcamp  3)  Use  Giaer  chat  4)  Get  your  prize!  

Page 71: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

Get your prize!

haps://petabridge.com/prognet  

Page 72: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

THANK YOU!

Email:  [email protected]    

Twiaerz:    @askotzko  

@AkkaDotNet  

Page 73: Akka.NET Fundamentals — #ProgNet15

@petabridge Petabridge.com

hap://LearnAkka.net