4

After numerous projects one-way asynchronous message passing looks like the only way to write concurrent distributed network services and keep your sanity.

I am looking for a simple, preferably open-source .NET or C++ library that implements a concept of asynchronous message passing similar to Erlang OTP platform. So far, I have only found RetLang to be somewhat similar, but

  1. It doesn't support message passing over network, and
  2. It seems to be abandoned.

I also evaluated TPL, TPL DataFlow, and RxLib. None of them support what I am looking for. In C++ world I only looked at Boost.

"Concise explanation of Erlang-style concurrency"

Any pointers are welcome!

Community
  • 1
  • 1
  • I'm not familiar with that domain so perhaps I'm completly wrong but it looks like you try to take some knowledge in a domain (erlang) and try fit it in another languages/frameworks and it's generally not the optimal approach. Perhaps a more generic question about what are your requirements and what things you want to avoid would have more (or better) answers. – Guillaume86 Mar 30 '12 at 13:25
  • What about the answers there : http://stackoverflow.com/questions/22187/erlang-style-concurrency-for-other-languages – Guillaume86 Mar 30 '12 at 13:30
  • Can you list what you are looking for exactly? Why did TPL Dataflow not fit your needs? You may want to check out MSMQ over WCF. – gjvdkamp Mar 30 '12 at 13:45
  • You've asked virtually the same question here: http://stackoverflow.com/q/9907309/78534. Many answers yet you did not post even one comment of clarification. Are you sure you're asking it right? – Maciej Mar 30 '12 at 18:52
  • This question grew out of the old one I asked earlier. There was nothing to comment as none of the proposed options were simple .net libraries. WCF is the monster that uses MSMQ which is an external dependency I am not willing to take. It is not even installed by default. MSMQ itself is slow, requires babysitting, doesn't load balance, etc –  Mar 30 '12 at 20:12
  • @gjvdkamp If you look at the link about Erlang I put in the question you will see that TPL doesn't support most of the features. At least it was my conclusion when I evaluated it six months ago. CCR comes close to what I am looking for, but it doesn't look like MS ships it as a library. You need to install Robotics Studio and rip it out of there. I am not even sure they are gong to support it moving forward. The version of CCR I played with was for VS 2008 :-( –  Mar 30 '12 at 20:16

3 Answers3

2

Take a look at 0MQ, it has interfaces for just about any language:

http://zguide.zeromq.org/page:all

Roger
  • 151
  • 7
0

We have re-written OTP.Net from scratch into NFX.Erlang It brings native support of Erlang types, pattern search and other concepts taken from Erlang -> .NET

Take a look at NFX.ServiceModel and NFX.Glue - that has many goodies that you ask about and our lib does not have any 3rd party dependencies and it is < 1 mb

Take a look at this post: http://blog.aumcode.com/2013/10/nfx-native-interoperability-of-net-with.html

itadapter DKh
  • 596
  • 3
  • 7
  • Latest version of NFX.dll does not seem to have Erlang when you use as your tutorial suggests to add additional namespace Imports in LINQPad, Erlang not showing in namespaces?? Has it been removed? Looking for a good example of connecting C# to an Erlang / Elixir genserver, not pheonix, just simple genserver basic example? – murray3 Apr 14 '21 at 15:28
0

Have you looked at MPI for C++? It seems to be the closest one I can think of that fits the description your provided i.e. it spawns processes with distinct memory spaces that cooperate by message passing.

Tudor
  • 61,523
  • 12
  • 102
  • 142
  • Thanks! I have seen it mentioned in similar questions. –  Mar 30 '12 at 20:21
  • 2
    @Serge: There is also an implementation for .NET if you are interested: http://osl.iu.edu/research/mpi.net/ – Tudor Mar 30 '12 at 21:39