protoactor  bootcamp  dotnet  series 
Thursday, May 28, 2020

Proto.Actor Bootcamp

Valentin Miroshnichenko
Go C#

Proto.Actor Bootcamp

Get the sourcecode

Welcome to Proto.Actor Bootcamp. It is a free course for self-study.

This training course consists of nine main parts, during which you will learn how to create fully functional, real-world programs using Proto.Actor actors and many other components of the Proto.Actor Framework.

We will start with the basics of actors and gradually approach more complex examples.

This course is for self-study — you can do it at any pace you like.

What will you learn from this course

In this course, you will learn how to use Proto.Actor Framework to create reactive, parallel systems. You will learn how to develop applications that seemed impossible or very complicated before learning Proto.Actor Framework. After this course, you will feel more confident in solving large and complex tasks.

Module 1: Introduction to Actor Model and Proto.Actor

In the first module, we will give the basic definitions of the actor model and the Proto.Actor Framework:

  1. Why use the actor model.
  2. Types of applications for which actors are suitable.
  3. Use of Proto.Actor in different types of applications.
  4. The Reactive Manifesto
  5. Key features of the Proto.Actor.
  6. Actors and messages.
  7. What’s an actor in Proto.Actor.
  8. What’s a message in Proto.Actor.
  9. What’re Props, RootContext, and ActorContext in Proto.Actor.
  10. Overview of the supervisor hierarchy in Proto. Actor.
  11. Installing Proto.Actor.

Module 2 Defining and using actors and messages.

In the previous module, we learned the basic concepts of the actors model and messages. In this chapter, we will study these concepts in more detail. You will learn how to use actors and messages in your applications.:

  1. Defining Actors.
  2. Actor References.
  3. Defining Messages.
  4. Types of Message Sending.
  5. Actor Instantiation.
  6. Defining Which Messages an Actor will processing.
  7. Sending a Custom Message.

Module 3 Understanding Actor Lifecycles and states.

From this module, you will learn about the actors’ life cycle, and also the internal state of the actor.

  1. Actor Lifecycle.
  2. Actor Lifecycle Messages.
  3. Terminating Actors and Hierarchy of Actors
  4. What is the Poison Pill message and how to work with it..
  5. Switchable Actor Behavior
  6. Refactoring with using behavior switching .

Module 4 Creating actor hierarchy and error handling.

In this module, you will learn how to create a self-recovering system.

  1. Supervisor and actor hierarchy.
  2. Overview of the application that demonstrates the supervisor’s capabilities and the actors hierarchy.
  3. Actor’s address and PID.
  4. Creating UserCoordinatorActor.
  5. Creating MoviePlayCounterActor.
  6. How parent actors are watching over their children actors.
  7. Strategies to control the state of children’s actors.

Module 5 Message Routing

In this part of our course, you will learn how to quickly and easily solve the scalability problem in your application with routers.

  1. Router pattern.
  2. Load balancing with Proto.Actor routers.
  3. Pool Router.
  4. Group Router.
  5. ConsistentHashing Router.
  6. Implementation of the router pattern with using actors.

Module 6 Message channels

In this module, you will learn about the different types of channels that used to send messages between actors.

  1. Channels Types.
  2. Point-to-point Channel.
  3. Publisher/Subscriber Channel.
  4. EventStream.
  5. DeadLetter Channel.
  6. Guaranteed delivery.

Module 7 Proto.Actor Remote

Here we will see how to create a distributed application that runs on multiple computers or virtual machines. You’ll see how Proto.Actor helps you accomplish this most complex task:

  1. What is horizontal scaling.
  2. Overview Proto.Actor Remote.
  3. Example of working with Proto.Actor Remote.

Module 8 Proto.Actor Cluster

In module 8, you learned how to create distributed applications with a fixed number of nodes. The static membership approach is simple but does not have a ready-made load balancing solution or fault tolerance. A cluster allows you to dynamically increase and decrease the number of nodes used by a distributed application, eliminating the fear of having a single point of failure:

  1. Why do you need clusters.
  2. Membership in the cluster..
  3. Joining to the cluster.
  4. Processing tasks in the Cluster.
  5. Running a Cluster.
  6. How to distribute tasks by using routers.
  7. Reliable task processing.
  8. Cluster Testing.

Module 9 Persistence Actor

The actor state contained in RAM will be lost when the actor will be stopping or restarting or when the actor system will be stopped or restarted. In this chapter, we will show you how to save this state using the Proto.Actor Persistence module:

  1. What is Event Sourcing.
  2. Persistence actors.
  3. Snapshotting.

How to get started

Here’s how the Proto.Actor Bootcamp works.

Use Github to Make Life Easy

This Github repository contains Visual Studio solution files and other assets you will need to complete the bootcamp.

Thus, if you want to follow the bootcamp we recommend doing the following:

  1. Sign up for Github, if you haven’t already.
  2. Fork this repository and clone your fork to your local machine.
  3. As you go through the project, keep a web browser tab open to the Proto.Actor Bootcamp so you can read all of the instructions clearly and easily.

When you’re doing the lessons…

A few things to bear in mind when you’re following the step-by-step instructions::

  • Don’t just copy and paste the code shown in the lesson’s README. You will memorize and learn all the built-in Proto.Actor functions if you will typewriter this code yourself. Kinesthetic learning FTW!
  • Don’t be afraid to ask questions. You can reach the Proto.Actor team and other Proto.Actor users in our Gitter chat here.


We will provide explanations of all key concepts throughout each lesson, but of course, you should bookmark (and feel free to use!) the Proto.Actor Docs

Tools / prerequisites

This course expects the following:

  1. You have some programming experience and familiarity with C#
  2. A Github account and basic knowledge of Git.
  3. You are using a version of Visual Studio ( it’s free now!)