NetMQ / Zyre

C# Implementation of ZeroMQ Realtime Exchange Protocol, based on NetMQ
Mozilla Public License 2.0
33 stars 14 forks source link

Add a proof-of-concept port of Zyre to .NET Standard 2.0 #12

Closed Whiteknight closed 7 years ago

Whiteknight commented 7 years ago

I am opening this PR to begin discussion on the port to .NET Standard. This is by no means a final implementation and is not suitable to be merged right now.

.NET Standard 2.0 is the earliest version that we can target without making code changes. We may be able to move down to .NET Standard 1.3 (Same version that NetMQ currently targets) with some development effort.

This port exists concurrently in the same directory as the existing version and shared all source files to avoid the headache of maintaining a separate folder structure. When we're confident that this is a good direction to go, we can delete the old .csproj, rename the new one to the old name and delete a few unnecessary metadata files (packages.config, NetMQ.Zyre.nuspec, Properties/* These files are manually excluded from the new .csproj and those exclusions can also be removed).

SamplePeer and NetMQ.Zyre.Tests assemblies need to be updated to either target .NET Framework 4.6.1 (or higher) or .NET Core 2.0. The latter is preferable for cross-platform testing.

I have published this package to nuget temporarily under the name "NetMQ.Zyre.Standard", for down-stream testing. When/if this PR is merged we can publish the official package under the correct package ID and I can remove this temporary one from the listings: https://www.nuget.org/packages/NetMQ.Zyre.Standard/

dalebrubaker commented 7 years ago

I did most of the original work on NeMQ.Zyre, but I don't use NetMQ and I currently have very little time to work on this project. I 'm fine with your idea of moving to .NET Standard 2.0, but I have almost zero experience with it. I can help you some perhaps (e.g. the WinForms SamplePeer), but I haven't been keeping up with NetMQ.

@Whiteknight , I think there aren't a lot of users of NetMQ.Zyre. Would you like to take the lead on it at some point?

Perhaps @somdoron or @drewnoakes have an opinion about this?

somdoron commented 7 years ago

I think multiple maintainers is important, so if someone have the time and to contribute we should welcome them

drewnoakes commented 7 years ago

@Whiteknight it's great that you're working on this.

I see this PR includes the new csproj format. I personally think you can replace the old one with this new CS2017 one. It's possible to specify multiple target frameworks too, and have dotnet pack bundle net40 and netstandard2.0 into the same NuGet package.

Targeting lower netstandard versions is obviously better, but doing so depends upon the complexity of code changes, as you say.

I'd vote for migrating to the new project format, replacing the old one (and the old nuspec). Would be good to include documentation and symbols with the package, as is done in NetMQ.

somdoron commented 7 years ago

@Whiteknight I gave you permissions on the repository. Please read our guidelines: https://rfc.zeromq.org/spec:22/