Orleankka is a functional API for Microsoft Orleans framework. It is highly suitable for scenarios where having composable, uniform communication interface is preferable, such as: CQRS, event-sourcing, re-routing, FSM, etc.
References: intro, features, slides and discussion.
- Message-based api with auto-generation of Orleans' interfaces
- Special api bindings for C# and F# (DU, Pattern Matching, Tasks, Custom DSL)
- Simplified programmatic configuration via fluent DSL (client, cluster, embedded, playground)
- Convenient unit testing kit (stubs, mocks, expectations)
- Redesigned streams api (actor subscriptions)
- Declarative regex-based stream subscriptions (great for CQRS/ES projections)
- Content-based filtering support for stream subscriptions (both imperative and declarative)
- Switchable actor behaviors with built-in hierarchical FSM (behaviors)
- Poweful actor/proxy invocation interceptors
To install client Orleankka library via NuGet, run this command in NuGet package manager console:
PM> Install-Package Orleankka
For server-side library:
PM> Install-Package Orleankka.Runtime
Check out "Getting started" guide: C# , F#.
Clone repository and run the following in CLI from solution's root folder:
PM> Nake.bat
This will restore dependencies and build everything in debug
mode. Run Nake.bat
with -T
switch to see available commands.
- "WebScan" [demo]
- TestKit [demo]
- Event Sourcing
- Reentrant messages [rw-x]
- Azure cloud service [hub]
- Client-side observers [chat]
- Streams [chat]
- Hello, world! [demo]
- Chat [client] [server] [shared]
- eCommerce [demo]
- Reentrant messages [demo]
- Streams [client] [server] [shared]
- Suave web server [see]
Complete documentation could be found on wiki.
Integration tests (those using real actor system) won't work with XUnit visual studio runner due to inability to disable shadow copy xunit/visualstudio.xunit#9
Bug-fix pull requests are always welcome. For new features or modifications, please first create an issue, so we can discuss it before any effort is wasted.
Apache 2 License