C++ 条件反序列化

C++ 条件反序列化,c++,networking,serialization,encoding,C++,Networking,Serialization,Encoding,我仍然不确定我的问题的标题是否正确,很可能不是。然而,我花了一些时间搜索了net和stackoverflow,找不到对我所面临问题的良好描述 基本上,我想要实现的是能够读取一些原始字节,并根据其中一些字节的值以不同的方式解释其余字节。这就是如何工作的方式,你检查标签,并根据它解释结果。当然我可以在C++代码中保持这个逻辑,但是我正在寻找一个解决方案,它将把逻辑从源代码中移出(也许是一些XML描述)。这将使我能够更容易地描述不同的编码(协议)。我熟悉协议缓冲区和其他一些序列化库,但它们都解决了不同

我仍然不确定我的问题的标题是否正确,很可能不是。然而,我花了一些时间搜索了net和stackoverflow,找不到对我所面临问题的良好描述

基本上,我想要实现的是能够读取一些原始字节,并根据其中一些字节的值以不同的方式解释其余字节。这就是如何工作的方式,你检查标签,并根据它解释结果。当然我可以在C++代码中保持这个逻辑,但是我正在寻找一个解决方案,它将把逻辑从源代码中移出(也许是一些XML描述)。这将使我能够更容易地描述不同的编码(协议)。我熟悉协议缓冲区和其他一些序列化库,但它们都解决了不同的问题。他们假设他们在通信的两端,而我想描述通信(某种程度上)


是否有这样的解决方案,如果没有-为什么没有?我在尝试实现它时会遇到一些固有的困难。

我不知道这样的事情


至于为什么什么都没有,可能是因为没有人真正需要它。通信协议不太可能发生任何重大变化,那么为什么要支付对不会发生的变化作出反应的能力呢?

我不知道这样的事情


至于为什么什么都没有,可能是因为没有人真正需要它。通信协议不太可能发生任何重大变化,那么为什么要支付对不会发生的变化作出反应的能力呢?

我认为这是一项容易的任务,需要大量的工作,但很容易

两个重要概念:1)工厂和2)对象控件反序列化。工厂将基于ID或标记创建对象实例。创建对象后,该对象负责从数据流(或缓冲区)加载其成员

更简单的设计可能是实现嵌套工厂。工厂基于ID调用子工厂。这可能会沿着链继续,直到调用最终的静态创建方法来创建适当的对象实例

最后一个对象将被传递给流(或缓冲区),它将加载其数据成员。让对象加载其成员(而不是外部对象或函数)的原因是对象知道其成员的类型和布局。此外,每个对象都有一个位置,这样在添加或删除数据成员时,只有对象发生更改,而不是其他外部函数(访问对象数据成员)


希望这能有所帮助。

我相信这是一项容易的任务,工作量很大,但很容易

两个重要概念:1)工厂和2)对象控件反序列化。工厂将基于ID或标记创建对象实例。创建对象后,该对象负责从数据流(或缓冲区)加载其成员

更简单的设计可能是实现嵌套工厂。工厂基于ID调用子工厂。这可能会沿着链继续,直到调用最终的静态创建方法来创建适当的对象实例

最后一个对象将被传递给流(或缓冲区),它将加载其数据成员。让对象加载其成员(而不是外部对象或函数)的原因是对象知道其成员的类型和布局。此外,每个对象都有一个位置,这样在添加或删除数据成员时,只有对象发生更改,而不是其他外部函数(访问对象数据成员)

希望这有帮助