Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can Akka.NET and Original Akka communicate Using Remoting?

Tags:

akka

akka.net

Can Akka.NET and Original Akka communicate Using Remoting?

In other words can Akka be used to connect a JVM and CLR in a system?

like image 720
Arian Avatar asked Jan 16 '16 07:01

Arian


1 Answers

This issue on the akka.net Github https://github.com/akkadotnet/akka.net/issues/132 Describes several reasons why this doesn't work:

1) We use different serializers for user messages, Akka uses the default Java serializer, Akka.NET uses Json.NET. This could be solved by using e.g. google protobuf, serializers are pluggable.

2) Helios (akka.net transport) and Netty (akka transport) are most likely not compatible on a binary level, both do use a 4 byte length prefix to frame messages (AFAIK, @Aaronontheweb ?) but my guess is that they won't play nice together.

And perhaps more fundamentally:

The big issue here is this: Java is BigEndian, .NET is LittleEndian - at least, it's LittleEndian on most Windows systems. Endianness in .NET can vary from platform to platform, which is true for Mono too.

It also appears there is not much appetite for solving the issues:

I'm wondering how useful full protocol compatibility really is. So even with the issues you point out aside, imagine having to constantly maintain versions that work with specific Akka versions. You never know when something is going to change. Seems like it would be a nightmare to maintain.

I just don't see a compelling use case for wanting to run Akka.NET and Akka fully meshed. I would think that you normally just need to provide some limited functionality on the other side. It can be useful to maintain the same design pattern (actor model) across both systems, but full compatibility I'm not so sure.

So it is unlikely to work any time soon.

like image 61
mattinbits Avatar answered Sep 21 '22 06:09

mattinbits