Hacker News new | ask | show | jobs
by lvice 1683 days ago
I've now worked for about six months on a Akka.NET codebase. I find it a very elegant high-performance framework that gives you a lot of flexibility in how you want to solve a wide range problems.

This being said, I've been burned already several times by the complexity and its raw power. The codebase tends to become verbose and difficult to navigate (everything being an ActorRef). Debugging is difficult and coding is challenging for junior engineers, as you said. I found it very unforgiving to mistakes, and it's easy to shoot yourself in the foot if you use the abstractions without knowing very well what's going on under the hood. Edge cases can be very tricky to manage.

I'm still very conflicted about it. One one side the services powered by Akka are quite stable and performant, but I'm not sure the complexity justifies the means.

2 comments

Please take a look on Proto.Actor (C# version). Very elegant and lightweight solution.
The version for go is awesome.
Doesn't .NET now have a very similar core library anyway?
Only thing I can think of is the Task Parallel Library but I’m not sure how that compares to Actors.
Not at all, what I know. well it runs stuff in parallel but i believe thats where the similarities end.
That jogged my memory; what I was thinking of was TPL Dataflow. https://docs.microsoft.com/en-us/dotnet/standard/parallel-pr...

> The Task Parallel Library (TPL) provides dataflow components to help increase the robustness of concurrency-enabled applications. These dataflow components are collectively referred to as the TPL Dataflow Library. This dataflow model promotes actor-based programming by providing in-process message passing for coarse-grained dataflow and pipelining tasks. The dataflow components build on the types and scheduling infrastructure of the TPL and integrate with the C#, Visual Basic, and F# language support for asynchronous programming.

I stand corrected! Thank you!
You might be thinking of Orleans, but it's not exactly core.
We use Orleans on my team and it has been 99% worth it. The 1% is mostly problems due to bad configuration, easily remedied.
I'm glad to hear that somebody's using it in the wild. It was rejected at my place of work in favour of a BPMN-driven process engine. The thinking was that it's too difficult otherwise for business-people to understand the process.

Does your company write about its experiences?

Besides Orleans there is also the Service Fabric SDK and now also Dapr
Also https://getakka.net/ , but haven't used it myself