我正在寻找一种在两个客户端aptication之间发送C ++类的方法。 我正在寻找一种方法,我可以找到的是我需要为每个类Serialize / Deserialize(例如JSON)函数创建并通过TCP / IP发送它。 我正面临的主要问题是我需要传递约600个类(其中一些是包括其他实例的类),这意味着我需要花费下一个编写序列化/反序列化函数。
是否有编写Serialize / Deserialize函数的通用方法? 有没有其他方式发送C ++类?
谢谢, 盖伊尔加斯。
答案 0 :(得分:1)
提升序列化
虽然我没有把它用在自己身上,但在工作中我的同龄人却非常受欢迎
有关它的更多信息可以在"Boost (1.54.00) Serialization"
<强>节俭强>
Thrift具有非常有限的序列化功能,我认为这不符合您的要求。但它可以帮助您将数据从一个客户端“移动”到另一个客户端,即使他们使用不同的语言
有关它的更多信息可以在"Thrift: The Missing Guide"
答案 1 :(得分:1)
您是否正在使用框架?例如,Qt和MFC内置了序列化,可以让您的任务更轻松。否则我猜你需要在600个课程中花费至少一些努力。
如上所述,Boost Serialization可能是一个很好的方法,您也可以使用Boost Asio通过Tcp发送序列化类: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio.html
或者,有一个用于Google Protocol Buffers(protobuf)的C ++ API: https://developers.google.com/protocol-buffers/docs/reference/cpp/
答案 2 :(得分:1)
答案 3 :(得分:1)
您可能对ASN.1感兴趣。它不一定是最容易使用的,工具/库有点难以获得(http://www.obj-sys.com/index.php的Objective Systems值得一看,但不是免费的。)
然而,最大的优点是它非常标准化(因此库版本兼容性没有问题)并且大多数语言都以这种或那种方式受到支持。如果您需要跨多个平台的支持,则很方便。它也进行二进制编码,因此它的方式比XML(它也支持)更不臃肿。我出于这些原因选择了它,并没有后悔。
答案 4 :(得分:0)
如果您在linux平台上,可以直接使用json.h
库进行序列化。
以下是我遇到的示例代码:)