问题标签 [protocol-buffers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8857 浏览

c++ - How can protocol-buffers support serialization/deserialization of std containers?

We plan to replace Boost.serialization with protocol-buffers used in distributed system design. How protocol-buffers support complicated data structures such as std containers?

For instance, such a class is required to be serialized/deserialized in our case:

0 投票
1 回答
521 浏览

c# - 序列化和反序列化未知的继承类型

我开始考虑使用 proto-buf .Net 来满足媒体浏览器的序列化需求。

在新系统中,我们有一个可以用插件扩展的实体框架。

所以,比如我们在核心库中定义一个Media类,然后插件就可以定义Song等子类。

似乎 proto-buf .Net 需要了解我们核心定义的基类的所有子类型。

所以我应该用

但是……那时我对尚不存在的 Song 类一无所知。

是不是又回到了绘图板上?我是否正在尝试做一些图书馆不适合做的事情?

0 投票
2 回答
13783 浏览

protocol-buffers - 在 Google 协议缓冲区中是否有使用 int32 而不是 sint32 的好时机?

我最近一直在阅读Google Protocol Buffers,它允许在消息中使用各种标量值类型。

根据他们的文档,有三种类型的变长整数原语 - int32uint32sint32. 在他们的文档中,他们指出int32“对负数进行编码效率低下 - 如果您的字段可能有负值,请sint32改用。” 但是,如果您有一个没有负数的字段,我认为 uint32 将是比任何其他类型更好的类型int32(由于额外的位和处理负数的 CPU 成本降低)。

那么什么时候int32是一个好的标量呢?文档是否暗示只有当您很少得到负数时它才最有效?还是总是更喜欢使用sint32and uint32,具体取决于字段的内容?

(同样的问题也适用于这些标量的 64 位版本:int64uint64sint64; 但为了便于阅读,我将它们排除在问题描述之外。)

0 投票
4 回答
3783 浏览

python - 如何使用 Python 传输二进制数据?

我是第一次在客户端-服务器程序上工作,可悲的是,我不知道从哪里开始我正在做的事情。

我将使用Google Protocol Buffers在客户端和服务器之间传输二进制数据。我将使用 Python 变体。据我了解,基本思想是客户端将序列化数据,将其发送到服务器,然后服务器将反序列化数据。

问题是,我真的不确定从哪里开始向服务器发送二进制数据。我希望它会像 HTTP 请求那样“简单”,但我一直在 Google 周围寻找传输二进制数据的方法,并在大量的教程、指南和文档中迷失了方向。我什至无法通过调查 HTTP 传输来判断我是否在吠叫错误的树(我希望使用它,因此如果需要安全性,我可以将它提升到 HTTPS 的一个档次)。不过,我真的不想达到套接字编程的水平——我想在转向之前使用可用的库。(我也更喜欢标准的 Python 库,但如果有完美的 3rd 方库,我会活下去。)

因此,如果有人对如何通过 Python 传输二进制数据有一个很好的起点(或想自己解释一下),我将不胜感激。顺便说一句,我正在运行的服务器当前正在运行带有 mod_python 的 Apache。

0 投票
9 回答
6005 浏览

xna - 可用的游戏网络协议定义语言和代码生成

我一直在寻找一个好的通用二进制网络协议定义框架,以提供一种以多种语言(例如 Java 后端服务器和 iPhone 前端)编写实时游戏服务器和客户端(想想魔兽世界或雷神之锤 III)的方法用 Objective-C 和 Cocoa 编写的客户端)。

我想支持 Windows 上的 Java Flash 客户端、iPhone 客户端和 C# 客户端(以及 XBOX 上的 XNA 客户端)。

我正在寻找一种通过 TCP/IP 或 UDP 套接字流连接有效发送/接收消息的方法。我不是在寻找可以通过 HTTP Web 服务发送的东西,比如 JSON 或 XML 编组对象。虽然 Hessian 的二进制 web 服务协议是一个非常有趣的解决方案

我想要一种网络协议格式和客户端/服务器基本实现,它允许客户端连接到服务器并在定义的协议中发送任何消息并在协议中接收任何消息,而无需绑定到某种 RPC 端点。我想要在我的协议传入和传出的任何消息的通用流。这样我就可以支持服务器每 100 毫秒向所有客户端发送游戏中各种实体的位置之类的东西。

0 投票
3 回答
9794 浏览

.net - 协议缓冲区:我应该使用 int64 还是 fixed64 来表示 .NET DateTime 值?

我需要在协议缓冲区消息中序列化一个 .NET DateTime 值。

我的计划是使用 DateTime.ToBinary() 然后在消息中传递 64 位返回值。但我不确定选择什么作为协议缓冲区数据类型来表示它。

我想我对何时应该使用 fixed64(或 sfixed64)数据类型感到困惑。

我假设在这种情况下我会使用带符号的类型,因为 DateTime.ToBinary() 返回的值可以是负数也可以是正数。

0 投票
1 回答
5137 浏览

c++ - 哪些库必须与协议缓冲区生成的 C++ 代码链接

我有来自 mytest.proto 文件的 mytest.cc 和 mytest.h 输出,但我找不到任何关于如何为此使用 g++ 编译对象的参考。(.proto 很好,因为我可以使用 Python)

g++ mytest.cc -l???????

要包括哪些库?

0 投票
3 回答
9563 浏览

serialization - 使用 ProtoBuf 时最好的加密方法是什么?

我已将移动设备上的数据库从 VistaDB 迁移出去,因为它太慢了。我现在使用 ProtoBuf 在存储卡上创建一系列平面文件,唯一的问题是显然没有加密。

哪种加密方法最适合 ProtoBuf?我基本上是将数据实体的集合序列化为文件,然后从文件反序列化回我的集合中。我认为进行加密的最佳位置是在读/写的 FileStream 中。

数据将包含 NI 编号、名称和地址,因此必须是安全的。有人知道吗?

0 投票
1 回答
1731 浏览

c# - 混淆和 protobuf.net - 例外:未定义默认枚举值

尝试序列化包含混淆项目中的枚举的类时,出现以下异常:

ProtoBuf.ProtoException:未为可选属性 Y 定义默认枚举值 X

如果我从混淆中排除所有受影响的枚举,一切运行正常,但是,我切换到 protobuf.net 以便能够混淆更多代码内容,所以我希望有更好的解决方案。

那么是混淆器对 protobuf.net 造成了很大的影响,还是我以错误的方式声明我的枚举?

我努力了:

也根本没有合同和其他一些不那么明显的事情,但除了排除工作之外什么都没有。顺便说一句:在使用 protobuf.net 时,我们与枚举有什么关系吗?

0 投票
1 回答
13852 浏览

c# - ProtoInclude 属性是什么意思(在 protobuf-net 中)

ProtoBuf-Net实现中,ProtoInclude属性是什么意思,它有什么作用?

一个例子将不胜感激。

在这篇文章中看到了它,但我不确定它的作用。这个例子是:

另外,有没有办法使用protogen工具生成这种继承?