Skip to content

supwar/Orleankka

 
 

Repository files navigation

Orleankka

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.

Orleankka is not just a translation layer on top of Orleans. Besides improved language support, Orleannka brings several new important features and fixes a lot of small-to-medium annoyances, constraints and some of the major limitations, currently present in Orleans' programming model.

References: video, slides and discussion.

Features

Runtime
  • Pluggable serialization protocols
  • Dependency injection support
  • Simplified configuration via fluent DSL (client, cluster, azure, embedded)
  • Programmable from any .NET language
  • New! Streams
Actors
  • Message interception via higher-order catch-all function (AOP)
  • Automatic GC with configurable keep-alive timeouts
  • Runtime independence (isolated testing)
  • Reentrant messages
  • Typed actors (C#)
  • Lambda-based message handlers (C#)
  • Special api for F# (DU, Pattern Matching, Tasks, Custom DSL)
Other
  • Convenient unit testing kit (stubs, mocks, expectations)
  • Push-based notifications with observers
  • Reactive Extensions (RX) support (client-side observers only)
  • Improved exception handling

How to install NuGet

To install Orleankka via NuGet, run this command in NuGet package manager console:

PM> Install-Package Orleankka

Check out "Getting started" guide (F#).

Add-ons

[inside]
Orleankka.FSharp NuGet Special api for F#
Orleankka.TestKit NuGet Unit testing kit
Orleankka.Azure NuGet Fluent configuration for Azure

Examples

C#
  • "WebScan" [demo]
  • TestKit [demo]
  • Event Sourcing
    • Idiomatic (CQRS, message-passing) [see]
    • With typed actors [see]
    • Persistence: GetEventStore [see]
    • Persistence: Streamstone [see]
  • Reentrant messages [rw-x]
  • Azure cloud service [hub]
F#
Serialization
  • .NET binary [default]
  • Orleans native (codegened) [built-in]
  • Newtonsoft.JSON [see]
Dependency Injection

Documentation

Complete documentation could be found on wiki.

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. Add-ons, like new serialization or communication protocols, DI container support, FSM, etc - are highly welcomed!

Community

Gitter

License

Apache 2 License

About

Functional API for Microsoft Orleans

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 76.1%
  • JavaScript 19.9%
  • F# 3.9%
  • Other 0.1%