【问题标题】:I need a serialization framework for D我需要一个 D 的序列化框架
【发布时间】:2010-10-21 11:22:46
【问题描述】:

我正在寻找一个D 模板 库来获取任意变量并将其编组为可传输的包。该变量可能是基本值类型(intchar[]real)或者可能是 structclass,甚至可能包含或是引用类型。一个不需要任何类型帮助就可以做到这一点的系统会很好,但我怀疑它的要求太多了,所以我会对使用轻量级注释的东西感到满意。

如果没有类似的关于如何构建的建议,那就太好了。我可以想到几种方法来进行绝育,但我不确定如何指定注释。

背景:在尝试使用 ASMX 和 WCF Web 服务而不是比较它们之后,我感觉我想尝试解决 RPC 问题。

编辑:顺便说一句,我不太关心中间的格式是什么(XML、JASON、YAML、二进制),只要它是可移植的。

【问题讨论】:

    标签: serialization metaprogramming rpc d


    【解决方案1】:

    我建议您自己编写,因为它是一个有用的模板练习,可以帮助您调整序列化格式以适应您的特定要求。

    您可能想查看 tools.serialize (http://dsource.org/projects/scrapple/browser/trunk/tools/tools/serialize.d) 作为起点。

    [编辑] 对不起!没想到是你! :D

    【讨论】:

    • 当您在回答您提出的问题时被指向您自己的网站时,这很有趣。 (OTOH,至少我没有写,因为那会很烦人;)
    【解决方案2】:

    看看Google Protocol Buffers。也许您可以直接使用 C++ 或 C 绑定,或者自己编写 D 绑定。

    【讨论】:

    • 我想我只是把它放在标签中,但我正在寻找一个元编程解决方案,例如模板函数。 OTOH 添加 D 支持可能会很酷。
    • 作为其中一个 C# 端口的作者(所以我知道什么是/不涉及),我打算确切地建议(即编写一个 D 版本)。 +1
    • @Marc,你有你的 c# 版本的链接吗?
    【解决方案3】:

    这是我为 D 1.x 写的一个基本的。它是很久以前写的,所以也许可以改进它,但它确实工作。实际格式基本上是网络字节序二进制,所以存储和传输字节应该是安全的。

    http://gist.github.com/100885

    它不支持类或任意指针。要做到这一点正确,你需要一些能记住它已经序列化的引用的东西。如果您将自己限制为值类型、数组和 AA,它就可以完成这项工作。

    如果您确实想扩展它以支持类,我的建议是要求定义 toStream 和 fromStream 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      相关资源
      最近更新 更多