【问题标题】:Protobuf for communicating with legacy systems [closed]用于与遗留系统通信的 Protobuf [关闭]
【发布时间】:2020-12-27 17:06:28
【问题描述】:

我期待将 protobuf-net 与命名管道结合使用以与旧系统(WinXP 32 位、NetFramework 4.0.3)进行通信。 令人高兴的是,Net Framework 4.0 至少有 2.4.6 版可用。 最新版本的 readme.md 声明 net20 / net35 可以作为目标,但没有得到很大的支持。此外,信息页面指出需要 Net 4.6.1+ 并且在项目配置中我们发现至少必须以 netstandard2.0 为目标。

是否有任何(无痛)机会编译更高版本的 protobuf-net 对于网络框架 4.0 ? 似乎必须有“System.Buffers”和“System.Memory”的替代品, 这可能需要大量工作。

此外,从源代码中我们可以看到,使用带有命名管道的 protobuf-net 仍然被认为是“实验性的”。 可以发表任何声明,这离稳定还有多远? 我想在IPC using Protobuf 所示的生产环境中使用 protobuf-net,它 对我来说是非常优雅的解决方案。

【问题讨论】:

    标签: .net-4.0 protocol-buffers windows-xp named-pipes protobuf-net


    【解决方案1】:

    protobuf-net v2 包括 net20 和 net35 的下级目标; protobuf-net v3 没有。对于为什么的深入讨论,please see this blog post。假设 v3 可以针对 v2 构建吗?可能,通过适当的努力。不过,博客文章对此进行了更详细的讨论。

    最新版本的readme.md声明net20/net35可以定位

    请您给我一个链接,以便我澄清。我查过了,没看到那个说法。

    此外,从源代码中我们可以看到,使用带有命名管道的 protobuf-net 仍然被认为是“实验性的”。可以说这离稳定还有多远?

    实验性的命名管道基本 RPC 层完全是这样的:实验性的;它不被认为是稳定的,除非我有充分的理由增加更多的努力,否则我可能会为了 gRPC 而杀死它(另请参见:protobuf-net.Grpc)。特别是,微软正在投入一些精力来使进程内 gRPC 工作,因此将这些工作结合起来可能更务实。然而!这可能仅限于 .NET 5(或可能更高版本),如果您的目标是 .NET Framework 2.0,这对您没有帮助。

    最后:我不想告诉你,但是:旧版本的 .NET Framework 早已退役。大多数图书馆作者——尤其是免费图书馆的作者——不太可能投入大量精力来适当地支持他们。

    【讨论】:

    • 你好,马克。是的,你是对的,我从 v2 中读取了 readme.md,其中说明了目标 net20 和 net35。取消命名管道支持对我的用例非常不利,因此我考虑使用原始 protobuf,例如状态 here。我同意你的观点,保持 net40 兼容性对你来说是一项重大的努力,所以我考虑自己做。感谢您的快速响应
    • @AmbitiousD 要明确:我没有“杀死”命名管道支持;它从未真正活着
    • 是的,我理解,但如果我基于一个可能不可用且不稳定的功能创建一个新应用程序,它可能会被杀死这一事实让我三思而后行。很遗憾,因为从你的 github 页面我喜欢 protobuf-net 的工作方式。基本上我只是在寻找一种与遗留系统接口的方式,因为我想避免在 net40 中实现一个新概念。
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 2013-12-02
    • 2010-11-18
    • 2015-01-22
    • 1970-01-01
    • 2011-09-07
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多