Website | Core research paper | Github

Heavily influenced by Orbit, a Java actors flavor.

HanBaoBao: Orleans sample application with Kubernetes hosting


Core Orleans concepts.

Getting Started


Add unit testing to HelloWorld above

Stateful grain(s)

Russell's tutorial states that there's two ways to do stateful grains:

Look into MathGrains (when it has actual text) and/or build my own calculator

Chat application: investigate multiplayer communication. (Does Orleans support server->client communication flow, or is it all client-initiated?) -- looks like this Twitter-clone-like sample may have some answers to that.

There's also the concept of "grain observers" (IGrainObserver), which the presence sample uses.

Dynamic lookup of grains? Display a list of active grains?

Dynamic invocation of grains? Runtime discovery of grains?

Versioning? Contract versioning?

Grains implementing multiple interfaces? (supported or not?)

Messaging underpining

If this is an actors implementation, I would think we would be able to get to the messages being sent/received in a more detailed fasion, which could then allow for some of the dynamic invocation of grains that I'm curious about.

Grain call filters (interceptors)

Request context (request/response metadata)

How do I hook into grain lifecycle to know about activation/deactivation?

Here it documents that application logic can participate with a grain's lifecycle in one of two ways.

Are grains leased, and can I configure leasing options?


In the Unit Testing section, we see reference to this snippet of code:

hostBuilder.ConfigureServices(services => {
    services.AddSingleton<T, Impl>(...);

Does this mean we have the ability to do singleton implementations of grains? No, I think this is related to how services/objects are injected into grains, false alarm.

Tags: distribution   library   actors   clr  

Last modified 19 August 2021