• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language
    C#
  • License
    MIT License
  • Created almost 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This repository illustrates the road to orleans with practical, real-life examples. From most basic, to more advanced techniques.

road to orleans

Gitter

This repository illustrates the road to orleans with practical, real-life examples such as .NET solutions. From most basic to more advanced techniques. The code is written using .NET 6 and was tested on macOS (Catalina 10.15.7) and, wherever docker is supported, Linux (Alpine 3.12).

build & run

  • IDE: build + run (first the cluster, then the client)
  • run-[client/silo]-[docker/local].sh

monitoring

Silo dashboards are available by default on localhost:8080 unless configured otherwise in the code/dockerfile/run-[client/silo]-[docker/local].sh. Additionally, Datadog APM support is illustrated in solution 3b.

code

flowchart TD
Solution1(Solution1: One basic silo, no grains.)
Solution2(Solution2: One basic silo, one grain, one console client.)
Solution3(Solution3: One basic silo, one grain, one console client, <br/>everything containerized.)
Solution3a(Solution3a: Solution3 + grain persistence.)
Solution3b(Solution3b: Solution3 + datadog APM.)
Solution4(Solution4: First in-memory clustering example. <br/>Many silos, many clients.)
Solution5(Solution5: Solution4 where the grain interfaces F# library code. <br/>Additionally, F# unit tests covering the F# library code.)
Solution5a(Solution5a: Solution5 where the host and client are written in F#.)
Solution6(Solution6: Solution5 where the cluster is being called from a Web API.)
Solution7(Solution7: Solution6 + FeatureManagement, dependency injection in grains, <br/>unit tests for grains using OrleansTestKit.)
Solution8(Solution8: Solution7 + Persistent Membership Table in DynamoEB,<br/>ECS hosting, CloudFormation Template.)

Solution1 --> Solution2
Solution2 --> Solution3
Solution3 --> Solution3a
Solution3 --> Solution3b
Solution3 --> Solution4
Solution4 --> Solution5
Solution5 --> Solution5a
Solution5 --> Solution6
Solution6 --> Solution7
Solution7 --> Solution8
solution description docker support clustering clustered silos grains clients *visual studio code support *remote containers support
solution1 One basic silo, no grains. ✅ - 1 0 0 ✅ ✅
solution2 One basic silo, one grain, one console client. - - 1 1 C# grain 1 - console ✅ ✅
solution3 One basic silo, one grain, one console client, everything containerized. ✅ - 1 1 C# grain 1 - console ✅ ✅
solution3a Solution3 + grain persistence. ✅ - 1 1 C# grain 1 - console ✅ ✅
solution3b Solution3 + datadog APM. ✅ - 1 1 C# grain 1 - console ✅ ✅
solution4 First in-memory clustering example. Many silos, many clients. ✅ in-memory n 1 C# grain n - console ✅ ✅
solution5 Solution4 where the grain interfaces F# library code. Additionally, F# unit tests covering the F# library code. ✅ in-memory n 1 C# grain interfacing F# library code. n - console ✅
solution5a Solution5 where the host and client are written in F#. ✅ in-memory n 1 F# grain interfacing F# library code. n - console ✅
solution6 Solution5 where the cluster is being called from a Web API. ✅ in-memory n 1 C# grain interfacing F# library code n - web api ✅
solution7 Solution6 + FeatureManagement, dependency injection in grains, unit tests for grains using OrleansTestKit. ✅ in-memory n 1 C# grain interfacing F# library code n - web api ✅
solution8 Solution7 + Persistent Membership Table in DynamoEB, ECS hosting, CloudFormation Template. ✅ Dynamo n 1 C# grain interfacing F# library code n - web api ✅

*visual studio code support:

  • [ctrl/cmd]+shift+b: builds selected projects
  • f5: runs selected projects

*remote containers support: ability to develop/build/run/debug code inside containers. This is to support those who just want to quickly pull the repository code and experiment with it with e.g. Visual Studio Code. Code + batteries included.

further reading

to watch

More Repositories

1

Palladium

Execute asynchronous, long-running tests in Orleans and produce TRX results via an HTTP web api endpoint.
F#
12
star
2

fontbot

Choose word, choose font, tweet. Twitter bot written in Haskell.
Haskell
4
star
3

k6-testing

JavaScript
3
star
4

Teensy31-OV7670

Teensy 3.1 & OV7670 CMOS sensor library.
Arduino
3
star
5

programming-in-haskell

Programming in Haskell (second edition) exercises.
Haskell
3
star
6

roller

Haskell implementation of dice notation.
Haskell
3
star
7

haskell-sandbox

This is a sandbox repository I use to play with Haskell.
Haskell
3
star
8

erlang-lab

Erlang lab.
Erlang
2
star
9

CancellationTokensInAsynchronousIO

Non-scientific repository verifying .net 5's "better cancellation support" claims.
C#
2
star
10

hmmer3

Hmmer3 documents.
2
star
11

special-octo-fiesta

f# + elasticsearch + kibana + docker compose
F#
2
star
12

haskell-yesod-rest

Sample Haskell & Yesod application demonstrating a basic REST API. It could serve as a starting point for a toy project.
Haskell
2
star
13

binoculars

C#
2
star
14

telesign-client-fsharp-phoneid

A simple fsharp application demonstrating basic telesign phoneid calls.
F#
2
star
15

argon

minimal development environment
Shell
2
star
16

articles

Dockerfile
2
star
17

uncharted-dependencies

F#
2
star
18

orleans-sandbox

orleans sandbox
C#
2
star
19

ping

Raspberry Pi ARM assembly project - custom built PING gaming console.
Assembly
2
star
20

FeatureManagementSandbox

C#
2
star
21

argon-examples

use cases for argon
Shell
2
star
22

null-sentry

Forth
1
star
23

probable-eureka

f# + filebeat + elasticsearch + kibana + docker-compose
F#
1
star
24

zero

A silly little realtime Haskell rendering project.
Haskell
1
star
25

notepad

1
star
26

haskell-concurrency

concurrent haskell
Shell
1
star
27

akkasandbox

Dockerfile
1
star
28

ProjectEuler

My solutions to projecteuler.net problems.
C#
1
star
29

detached-and-obsolete

Erlang
1
star
30

mercury-functional

Functional type of code with explicitly separated pure and effectful responsibilities.
F#
1
star
31

photon-sandbox

This is a sandbox repository I use to play with Photon.
Arduino
1
star
32

piotrjustyna.github.io

Hack log.
CSS
1
star
33

hello-world-async

Hello world project to practice F# async code.
F#
1
star
34

bug

Haskell
1
star
35

the-rust-programming-language

"The Rust Programming Language" exercises.
Rust
1
star
36

hello-cdk

Just a simple repository to explore cdk with .net/f#. The goal is to deploy an f# web api to aws ecs with cdk.
F#
1
star
37

FanoutAPIV2

Version 2 of a fanout API. In this project I want to explore throughput problems of task-heavy APIs under unpredictable traffic load.
C#
1
star
38

erlang-sandbox

This is a sandbox repository I use to play with Erlang.
Erlang
1
star
39

netpolynomial

Single and multivariate polynomial representation for .NET.
C#
1
star
40

supreme-couscous

argon + secrets management
F#
1
star
41

mermaid-decision-tree

Convert decisions saved as json into mermaid charts.
F#
1
star
42

paket-nix

paket experiments with unix/linux systems
Shell
1
star
43

etssandbox

ETS Sandbox.
Erlang
1
star
44

docker-sandbox

This is a sandbox repository I use to play with Docker.
Haskell
1
star
45

abcdef

1
star
46

foa

Feedback On Anything.
Erlang
1
star
47

notsureyet

Silly TCP experiments.
Haskell
1
star
48

mercury-legacy

Legacy type of code with mixed pure and effectful responsibilities.
C#
1
star
49

LuaInterop

Lua
1
star
50

FanoutBackend

C#
1
star
51

haskell-anywhere

Use Haskell on any machine supporting docker.
Shell
1
star
52

FeedbackOnAnything

1
star
53

FanoutAPIV1

Version 1 of a fanout API. In this project I want to explore throughput problems of task-heavy APIs under unpredictable traffic load.
C#
1
star
54

FanoutHelperAPIV2

Version 2 of a fanout API helper. It's a sub-service of https://github.com/PiotrJustyna/FanoutAPIV2. In this project I want to explore throughput problems of task-heavy APIs under unpredictable traffic load and simultaneous horizontal scaling of groups of APIs.
C#
1
star
55

mercury-pure-functional

Functional type of code with explicitly separated pure and effectful responsibilities.
F#
1
star
56

drakon-renderer

(string -> svg drakon diagram) type of thing
Haskell
1
star
57

osmium

Shell
1
star
58

FanoutHelperAPIV1

Version 1 of a fanout API helper. It's a sub-service of https://github.com/PiotrJustyna/FanoutAPIV1. In this project I want to explore throughput problems of task-heavy APIs under unpredictable traffic load and simultaneous horizontal scaling of groups of APIs.
C#
1
star