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

Serialization 我需要一个用于D的序列化框架,serialization,metaprogramming,rpc,d,Serialization,Metaprogramming,Rpc,D,我正在寻找一个模板库来获取任意变量并将其封送到一个可传输的包中。变量可能是基本值类型(int,char[],real),也可能是结构或类,甚至可能包含或是引用类型。如果一个系统能够做到这一点,而不需要任何每种类型的帮助,那就太好了,但我怀疑这要求太多了,所以我很乐意使用一些轻量级的注释 如果没有像这样的建议,如何结构它会很好。我可以想出一些方法来进行消毒,但我不确定如何指定注释 背景:在尝试使用ASMX和WCFWeb服务后,我觉得我想尝试解决RPC问题 编辑:BTW,我不太关心中间格式是什么(X

我正在寻找一个模板库来获取任意变量并将其封送到一个可传输的包中。变量可能是基本值类型(
int
char[]
real
),也可能是
结构
,甚至可能包含或是引用类型。如果一个系统能够做到这一点,而不需要任何每种类型的帮助,那就太好了,但我怀疑这要求太多了,所以我很乐意使用一些轻量级的注释

如果没有像这样的建议,如何结构它会很好。我可以想出一些方法来进行消毒,但我不确定如何指定注释

背景:在尝试使用ASMX和WCFWeb服务后,我觉得我想尝试解决RPC问题


编辑:BTW,我不太关心中间格式是什么(XML,杰森,YAML,二进制),只要它是可移植的。

< P>我推荐你自己编写,因为它是模板中的一个有用的练习,并帮助你将序列化格式适应你的特定要求。

您可能希望以tools.serialize()作为起点


[编辑]对不起!我不知道是你看一看。也许你可以直接使用C++或C绑定,或者自己编写D绑定。

< P>这是我为D 1。x编写的一个基本的。它是很久以前写的,所以可能会改进它,但它确实有效。实际格式基本上是网络字节顺序二进制,因此存储和传输字节应该是安全的

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


如果您确实想将其扩展到支持类,我的建议是需要定义toStream和fromStream方法。

当您在回答问题时被指向自己的站点时,这很有趣。(OTOH,至少我没有这样写,因为那样会很烦人;)我想我只是把它放在标签里,但我正在寻找一种元编程解决方案,即模板函数。作为其中一个C#Port的作者(因此我知道其中涉及/不涉及什么),我打算提出确切的建议(即编写一个D版本)+1@Marc,你有你的c版本的链接吗?