Website | Core research paper | Github

Heavily influenced by Orbit, a Java actors flavor.

HanBaoBao: Orleans sample application with Kubernetes hosting

Concepts

Core Orleans concepts.

Getting Started

Investigation

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?

Singletons?

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