Skip to content

kouweizhong/Orleankka

 
 

Repository files navigation

Orleankka Logo

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.

Features

  • 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, azure, embedded)
  • 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
  • Poweful actor invocation pipeline interceptors

How to install

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 (F#).

Build sources

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.

Packages

[inside]
Orleankka NuGet Core and client lib
Orleankka.Runtime NuGet Server-side runtime lib
Orleankka.TestKit NuGet Unit testing kit
Orleankka.FSharp NuGet F# core and client lib
Orleankka.FSharp.Runtime NuGet F# server-side runtime lib

Examples

C#
F#
Dependency Injection

Documentation

Complete documentation could be found on wiki.

Known issues

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

Contributing

Any bug-fix pull request goes without a saying. For new features or modifications, please first create an issue, so we can discuss it before any effort is made.

Community

Gitter

License

Apache 2 License

About

Functional API for Microsoft Orleans

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 75.5%
  • JavaScript 16.1%
  • F# 7.7%
  • PowerShell 0.5%
  • Batchfile 0.1%
  • CSS 0.1%