Sobre esse lançamento vemos algumas novidades, mas eu não abordarei elas. Referenciarei alguns posts e apresentarei o projeto de demonstração que criei no github.
Ainda é cedo para aprofundar no tema e lançar um texto profundo sobre Orleans. Além disso acabaria floodando o assunto pois já tem uma galera atuando em Actor Models.
Actor models é um tema novo pra mim, mas o que me chama a atenção é a capacidade de hospedar componentes remotos. Isso me faz querer entender como e quais tecnologias e recursos estão envolvidos nessa tarefa. É o mesmo motivo que me fez fazer uma análise sobre o recém lançado Dapr.
Microsoft Orleans é uma implementação de Actor Model feito pela Microsoft e um dos seus principais cases é a franquia de jogos Halo. Você encontra uma lista de projetos que usa Microsoft Orleans em Who Is Using Orleans?.
Quem anda falando de .NET e Actor Models aqui no 🇧🇷 ?
Elemar aborda em
REACTIVE MESSAGING PATTERNS WITH THE ACTOR MODEL em 23/Agosto/2019
SIMPLIFICANDO SISTEMAS CONCORRENTES E DISTRIBUÍDOS COM MODELO DE ATORES em 28/Agosto/2019
Alexandre Brandão Lustosa
também aborda o Akka.NET no .NET Inside
Luis Antonio Adolphs Junior
anunciou no grupo de arquitetura a vinda do Akka para o .NET Standard em 27/Maio/2017
Eu, Luiz Carlos Faria
trouxe o tema para discussão em 28/fev/2018 e 15/Abril/2017
Mas o que me motivou a tocar no assunto?
A live do Fabio Gouw (GitHub | Linkedin) no Canal .NET, onde tirei uma dezena de dúvidas me ajudou no interesse pelo Microsoft Orleans.
A live foi fantástica, teve a presença de Magoo, vulgo Alexandre Costa. Onde debatemos sobre o assunto.
O que me motivou a escrever esse post e criar um projeto no GitHub foi a possibilidade de Dockenizar esse projeto e trazer para a realidade dos containers.
Para isso foi necessário realizar análises da documentação e do projeto fabiogouw/OrleansDemo do Fabio que usei para entender algumas decisões.
Meu principal objetivo era trazer para o jogo elementos como Consul, comum no papel de service discovery. Usar uma persistência em um NoSQL como o MongoDB. Isso porque a estrutura de dados do Orleans não tem dependências com modelos relacionais, portanto poderia usar o MongoDB que se encaixa perfeitamente a esse cenário.
Assim nasce luizcarlosfaria/microsoft-orleans-demo um seed project (projeto semente) beeeem divertido.
Microsoft Orleans 3.0 on .NET Core 3 - Seed project
Features
Silo e Cliente executando 100% configurados e rodando com Containers Docker
Tanto o Silo quando o Cliente são aplicações .NET Core 3.0 rodando em containers docker no Linux.
Persistência de Grains no MongoDB
1 Pré-configurado com persistência de Grains direto no MongoDB 4.2.
Service/Silo Discovery (clustering) com Consul
Hashicorp Consul pré-configurado para trabalhar como Discovery para os Silos.
Integrado ao Visual Studio
Clone, Play & Debug! Tudo integrado ao Visual Studio, pronto para debug.
Todos os serviços são hospedados e gerenciados com Docker Compose
O stack é todo implantado com Docker Compose, integrado ao Visual Studio.
Dashboard integrado
Dashboard Configurado e Integrado à Solução
Requisitos
- Visual Studio 2019
- .NET Core 3.0 SDK
- Docker e Docker Compose
Get Started
Faça o clone do projeto.
Abra a solução ./gaGO.io.MicrosoftOrleansDemo.sln.
Sete o projeto docker-compose como startup project.
Pressione F5.
Conclusão
Orleans e Actor Models são assuntos fantásticos, já tem bastante gente falando sobre o tema.
Por hora, você já tem 2 exemplos bem legais (o meu e o do Fabio) para testar e ver como as coisas funcionam.
Não deixe de marcar o projeto no GITHUB com estrela e colocar na sua watch list para poder receber notificações sobre as evoluções do projeto.
UPDATE 1
Dica do CR (@Crsxx no telegram)!
Um vídeo com "Hewitt é o idealizador do actor model, Meijer é uma das cabeças por trás do LINQ e Reactive Extensions".
0 comentários