protocols - ZeroMQ + Protocol Buffer

标签 protocols network-protocols zeromq

ZeroMQ FAQ页面建议使用Google的protobuf作为序列化消息内容的一种方式。

有人看到一个好的用法示例吗?

我还需要得到“序列化消息的最大优点是什么?”的答案。 - 是否我可以没有它并利用更精简的管道。

我非常喜欢 .proto 文件和 protoc 编译器的想法。

另外,似乎另一个可以在 Playground 上使用的好工具是libev,任何 欢迎评论:)

最佳答案

如果您 100% 确定要通过 ZMQ 进行通信的程序始终能够理解彼此的二进制格式(例如,因为它们总是一起分发,并且无论如何都使用相同的编译器选项进行编译)我认为序列化增加的开销没有任何好处。

一旦无法满足上述条件(例如在不同主机类型上运行的合作伙伴程序、用不同语言编写的程序甚至可以及时独立发展的合作伙伴程序 - 这可能会导致其原始二进制结构不兼容),序列化就变成很可能是必须的。

现在似乎每个人和他们的兄弟都在创建序列化解决方案,这可能表明没有一种适合所有情况的解决方案。 This page包含 27 个(!!)不同序列化系统的序列化时间、反序列化时间和大小的相当全面的基准测试。不要跳过该页面的第一段,它说“警告,基准测试可能会产生误导”。您的申请、您的数据对您来说很重要,但其中提供的数据可以帮助您缩小想要详细研究的选择范围。

关于protocols - ZeroMQ + Protocol Buffer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390561/

相关文章:

objective-c - Objective C 中的协议(protocol)继承

networking - 协议(protocol)的选择?

networking - 通过 NAT 连接 P2P?

c++ - ZeroMQ Majordomo 工作人员的断言错误

ios - 无法采用 UITableViewDataSource 协议(protocol) - 方法不会覆盖其父类(super class)中的任何方法

iphone - 在符合协议(protocol)的类中重新声明/扩展 Objective-C 协议(protocol)中定义的 typedef

swift - 对 Hashable 的条件一致性

linux - 有关在 Linux 中自定义第 2 层实现的说明

python - PyZMQ req 套接字 - 卡在 context.term() 上

c++ - 关于zeromq v 3.2.3的yqueue.hpp中push()的一个谜题