In this repository, I have started an experimentation with Orleans as an Actor Model.
I tested the following features - Microsoft Orleans documentation ๐
- Persistence
- Reminder
- Startup tasks
- Transactions - Reentrancy or Interleaving for the AccountGrain, Stateless worker for the MoneyTransferGrain
- Observers
- Streaming
- Unit testing
- Dashboard ๐คOrleansContrib
- Code sample browser ๐MS-Learn
- SignalR.Orleans ๐คOrleansContrib
- Articles, videos and samples ๐Awesome Software Architecture
- Introduction to Actor-based development with Orleans ๐ฝ๏ธ1hour - Chris Klug - NDC Oslo 2023
- Orleans support in Aspire ๐MS-DevBlog | Voting sample app ๐MS-Learn
- All in all, I have mixed feelings about Orleans. I believe it is well-suited for games and other scenarios where Actors/Grains can participate as business logic.
- The architecture provides an efficient way of scaling the computation power by adding more Servers -> Silos -> Grains.
- No need to worry about database persistence and caching since Orleans handles it out of the box.
- However, I am not entirely convinced about the use of Reminder and Streams. While they are nice to have, I would prefer to use the official packages for Azure ServiceBus or Amazon SQS.