I was able to make cluster on .NET Core talk to .NET Full and vice versa by doing a small hack.
I created a custom serialization binder for JSON.NET that replaces mscorlib for System.Private.CoreLib and vice versa: https://gist.github.com/nvivo/8665a7c984a2f0382851ffe3cbe6aa36
This works because all my messages only uses basic types from mscorlib like primitives, lists, ienumerables, etc and they're available in both. But at the same time I feel it's a lot of copy/paste and it is working, but it will be a pain to maintain.
I'd like to propose 2 extension points that would help alleviate this problem:
Allow some control during serialization, by allowing us to replace TypeExtensions.TypeQualifiedName somehow. Both .NET Core and Full allow to load core types using just the name without assembly, so sending System.String instead of System.String, mscorlib could both ways work.
Allow some way to set the SerializationBinder on json.net, so we can add just the binder and control de deserialization like I did.
I know both these methods are quite internal behavior, but simply allowing these extension points would be enough to have a working environment for most people. I for one have a scenario where due to third party dependencies, I'll have to support .NET Full for a long time while running most of my cluster on linux with .net core.
I could do a PR, but would like some opinion on this idea before any changes.
Same problem on Wire (Hyperion) https://github.com/rogeralsing/Wire/issues/145
We're also considering moving slowly our services to .NET Core, however, it would be great, if we could keep Akka.NET as the integration layer between them (and not downgrading to REST). If it is absolutely not a viable option due to technical reasons, then I think it would be beneficial to the community to know outright that it will never happen.
Just a note, I'm currently running a 130 node production cluster, 60 of them on .NET core and the rest on net47 with this code. No surprises so far.
Thats pretty cool @nvivo. Would love to see a blog post someday on how your managing + deploying your nodes.
This will be useful in enterprise scenarios.
Now I have node envy. We only have 15 lol
Most helpful comment
Just a note, I'm currently running a 130 node production cluster, 60 of them on .NET core and the rest on net47 with this code. No surprises so far.