Introdução à Arquitetura Actor-Based em .NET
A arquitetura baseada em atores é uma abordagem para criar sistemas distribuídos, concorrentes e resilientes. Em .NET, a implementação mais popular desse modelo é o Akka.NET e Microsoft Orleans, frameworks que trazem o modelo de atores para o ecossistema .NET.
Neste post, exmploro como funciona a arquitetura actor-based com Akka.NET, entender seus conceitos e ver um exemplo prático,
🤖 O que é uma Arquitetura Baseada em Atores?
A arquitetura baseada em atores usa o conceito de atores (como o proprio nome diz :/ ) como as menores unidades de processamento. Cada ator é responsável por:
- Receber mensagens 📩
- Processar mensagens 🔄
- Manter seu próprio estado 🔐
E o mais interessante: os atores não compartilham estado entre si. Toda a comunicação ocorre por meio de mensagens assíncronas!
Principais Conceitos
- Atores: Entidades que processam mensagens.
- Mensagens: O meio de comunicação entre os atores.
- ActorSystem: Um contêiner que gerencia os atores.
- Supervisão: Atores “pais” supervisionam atores “filhos”, podendo reiniciar ou parar atores que falham.
Exemplo de Código: Criando um Ator Simples
Agora vamos ver um exemplo básico de como criar um ator em Akka.NET. Aqui, vamos criar um ator simples que recebe e imprime mensagens:
using System;
using Akka.Actor;
public class SimpleActor : ReceiveActor
{
public SimpleActor()
{
// Definindo como o ator reage às mensagens
Receive<string>(message =>
{
Console.WriteLine($"Mensagem recebida: {message}");
});
}
}
class Program
{
static void Main(string[] args)
{
// Criando o ActorSystem
var actorSystem = ActorSystem.Create("meuSistemaDeAtores");
// Criando um ator
var simpleActor = actorSystem.ActorOf<SimpleActor>("meuAtor");
// Enviando uma mensagem para o ator
simpleActor.Tell("Olá, Ator!");
// Mantendo o sistema vivo até pressionar uma tecla
Console.ReadKey();
// Finalizando o ActorSystem
actorSystem.Terminate().Wait();
}
}
Referências
[1] - https://getakka.net/
[2] - https://learn.microsoft.com/en-us/dotnet/orleans/overview