我建立一个分布式C ++应用程序,需要做大量的该真实被不同的过程和计算机之间通过简单的数据结构的序列化和反序列化。

我不感兴趣序列化复杂的类层次结构,但更发送结构用几个简单的构件,诸如数字,串和数据载体。数据载体往往是许多兆大。 我担心的是文本/做基于XML的方式太慢了,我真的不想这样写我自己,因为像字符串编码和数字字节序的问题可以把它的方式比它更复杂表面上看起来。

我一直在寻找一个位在协议缓冲器和boost.serialize。根据该文件,协议缓冲区似乎很在乎性能。 升压似乎有点在这个意义上更轻巧,你没有指定数据格式,我找到这个特定的项目挺方便的外部语言。

所以我的问题归结到这一点:没有人知道是否升压序列化是快我上面描述的典型使用情况

此外,如果有,可能是适合这个其他图书馆,我很高兴听到他们。

有帮助吗?

解决方案

我强烈建议协议缓冲区。他们是令人难以置信的简单易用,提供了强大的性能,并采取像字节序和向后兼容性问题的照顾。为了使它更具吸引力,串行化的数据是独立于语言的由于许多语言实现。

其他提示

ACE和ACE TAO浮现在脑海中,但你可能不喜欢的规模和它的范围。 http://www.cs.wustl.edu/~schmidt/ACE.html

关于你提到的有关“快”和升压查询。这是一个主观的用词和不知道你的要求(吞吐量等),它是很难回答你。这并不是说我有升压任何东西基准自己...

有您可以使用消息层,但是这些可能比提升慢。我会说,你确定在提升一个很好的解决方案,但我只用ACE和其他专用通信/通讯产品。

我的猜测是用于提升是不够快。我已经用它在以前的项目数据序列并从磁盘,其性能甚至从来没有想出了作为一个问题。

回答这里大约系列化谈判一般情况下,这可能有助于你超过这个序列化库您选择使用。

话虽如此,它看起来像你知道大多数主要故障点的系列化(字节序字符串编码)。你没离开了版本控制和向前/向后兼容性。如果时间不是关键,我建议编写自己的序列化代码。这是一个启发性的经验,以及你的学习经验是非常宝贵的。虽然我会警告你,它往往会令你讨厌的基于XML的协议为他们消肿。 :)

哪条道路,你选择好运与您的项目。

boost.serialization不关心串编码或字节顺序。你会同样富裕,如果该事项对你不使用它。

您可能要考虑从ZeroC ICE: http://www.zeroc.com/

它的工作原理类似于CORBA,不同之处在于它的完全specced和由该公司所定义。有利的一面是,实现工作打算,因为有没有那么多。缺点是,如果你使用不支持的语言,你的运气了。

如果你只发送明确的定义的数据结构,那么也许你应该看看 ASN 0.1 作为编码方法

还有节俭,它看起来像一个alpha项目,而是用于和Facebook开发,所以它有它的几个用户。

或者良好的旧 DCE 时,这是标准的MS决定利用COM。它现在开源的,20岁为时已晚,但总比没有好。

不要先发制人优化。测量第一和第二优化

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top