-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.NET 5 support #88
Comments
I recently created a library to migrate large classic .NET Remoting projects to .NET 5 based on websocket-sharp, named CoreRemoting. |
Hello Hagen, great to hear from you again! :) The project looks very interesting!
I've always felt annoyed that such a good library is doomed because of the deprecation of Remoting. Any chances you could sketch up a new transport layer for Zyan based on CoreRemoting? |
It will soon be ready for production, after the following features are completed:
There are also some more unit tests needed to ensure good quality.
Yes. I would like to do the following:
I'll try to make as few compatibility breaks as possible.
WCF is also deprecated, so this is a dead end. Websocket-sharp based CoreRemoting is a good replacement for the TcpDuplexChannel, because it also supports duplex communication over one single connection (makes callbacks/push through firewalls possible). I've tried several Websocket libraries and choosed Websocket-sharp at the end, because it gave the most reliable results. My first approach for CoreRemoting was gRPC. It worked quite nice too, but I ran into issues, when I tried to use it with Blazor clients, because gRPC relies on native C++ DLLs (there is managed code only new variant of gRPC, but this one doesn't run on .NET Framework 4.x). When it comes to serialization I ended in using classic BinaryFormatter (with applying your extensions to make it more safe :) and DataContractSerializer (which was used in WCF as default). The latter was required to support Blazor clients, because Microsoft blocks BinaryFormatter usage in Blazor. I've tried almost other serialization libraies (Protobuf, MessagePack, JSON.NET, ...) I could find on nuget, but they all have some restrictions that they are not usable for a .NET Remoting replacement library. To leave to door to other transport and serialization technologies open, I've made them pluggable in CoreRemoting. |
Sounds exciting! :)
Did you ever use Zyan in your company's projects?
Perhaps we could get rid of too many constructor overloads in Zyan classes :)
Sure, WCF is a dead end.
That's great! It would be awesome to make them pluggable in Zyan itself. |
I have to add only a Signature property to the WireMessage class.
Unfortunately not 😭.
Of course, the Zyan source code should be polished.
No, only parameters to call delegates are serialized. |
Sounds familiar... |
Hey Guys! |
Precise estimates are difficult 🔮, because I'm doing this only in my free time 🍸. |
First migration steps towards .NET 5 are done. This is the commit: 0aca4ad |
That's great! 🎉 InterLinq probably just needs a new adaptor/query executor for the CoreRemoting. |
CoreRemoting currently does support delegates and events, but not MarshalByRefObj. So I have implement this first in CoreRemoting. My next steps will be:
|
Do we really need
Zyan only supports proxies for interfaces, does it? |
But Zyan is using MarshalByRefObjects internally to provider delegate and event support.
|
Zyan has currently no support for .NET 5, because .NET Remoting is not available in .NET 5 anymore.
.NET 5 support would be a great.
The text was updated successfully, but these errors were encountered: