代码之家  ›  专栏  ›  技术社区  ›  BCS

我需要一个D的序列化框架

  •  5
  • BCS  · 技术社区  · 16 年前

    我在寻找一个 D 模板 库来获取任意变量并将其封送到可传输包中变量可能是基本值类型( int , char[] , real )或者可能是 struct class 甚至可能包含或是引用类型一个不需要任何类型帮助就可以做到这一点的系统是很好的,但是我怀疑这需要很多的帮助,所以我很乐意使用一些使用轻量级注释的东西。

    如果不存在这样的建议,那么如何构建它就更好了。我可以想出一些绝育的方法,但是我不确定如何指定注释。

    背景: 在尝试使用ASMX和WCF web服务而不是将它们相比较之后,我感觉我想尝试一下RPC问题。

    编辑: 顺便说一句,只要它是可移植的,我不在乎中间的格式是什么(XML、JASON、YAML、binary)。

    3 回复  |  直到 16 年前
        1
  •  3
  •   JesperE    16 年前

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

        2
  •  2
  •   DK.    16 年前

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

    http://gist.github.com/100885

    它不支持类或任意指针这样做 适当地 ,你会想要一些能记住它已经连载过的引用的东西如果您限制自己使用值类型、数组和AAs,它就可以完成这项工作。

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

        3
  •  1
  •   FeepingCreature    16 年前

    我建议您自己编写,因为这是模板化方面的一个有用练习,有助于您根据特定需求调整序列化格式。

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

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