akkadotnet / akka.net

Canonical actor model implementation for .NET with local + distributed actors in C# and F#.
http://getakka.net
Other
4.7k stars 1.04k forks source link

Is there a local-only Transport available for Akka.Remoting that can be used for Inter-Process Communication ? #7266

Open DSanchen opened 3 months ago

DSanchen commented 3 months ago

Is your feature request related to a problem? Please describe. I would like to use Akka.Remoting for Inter-Process communication only (e.g. only on the same host). No TCP/IP ports should be used, therefore I guess DotNetty is not suitable for this use-case.

Describe the solution you'd like I thought of a Transport that only use local resources, could be (for Windows / .Net Framework 4.8) NamedPipes or Unix Domain Sockets.

Describe alternatives you've considered Has anybody else already implemented a local-only Transport ? I didn't find one... ??

Additional context I did a quick and easy implementation of both NamedPipes and UDS Transports, but am not sure if all situations are handled correctly. Some basic tests with two apps on the same host look promising...

Aaronontheweb commented 3 months ago

Once upon a timed we had a NamedPipeTransport but that was in a feature branch that never made it into a live Akka.NET release.

DSanchen commented 2 months ago

Ok, seems like this might not be of too much interest. So for testing: Is it sufficient, when "my" transport meets all specs of "TestTransportSpec" and "GenericTransportSpec" (within Akka.Remote.Tests) ? Or are there other (undocumented) requirements that the above layers (Protocol Actor etc..) have on the Transport ? Especially I think about the Disassociated-Event ? When does a Transport send this ? I can't seem to find hints how to "correctly" implement a Transport class... 😳