问题标签 [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 回答
9325 浏览

java - 协议缓冲区 Java RPC 堆栈

根据这个维基百科条目:

“Protocol Buffers 与 Facebook 的 Thrift 协议非常相似,只是它不包含用于定义服务的具体 RPC 堆栈。由于 Protocol Buffers 是开源的,因此出现了许多 RPC 堆栈来填补这一空白。”

但是,没有引用 RPC 堆栈的示例。任何人都可以建议一个基于 Java 的 RPC 堆栈实现吗?

0 投票
1 回答
1392 浏览

protocol-buffers - 等效于 SerializeWithLengthPrefix 的 C++

我使用套接字(TcpListener 和 TcpClient)使用协议缓冲区(protobuf-net)构建了一个通信库,它工作正常,但现在一个同事需要编写一个库来使用 C++ 与我的软件进行通信。

原来我正在使用Serializer.NonGeneric.SerializeWithLengthPrefixand Serializer.NonGeneric.TryDeserializeWithLengthPrefix

protobuf C++ 库中是否有等效函数?如果没有,任何人都知道如何实现它,或者它是否已实现共享?

0 投票
1 回答
1048 浏览

c# - 用于字段的 ProtoInclude?

我有一个简单的对象

我的钥匙有问题。它的类型是 object,但它可以是 int、long 或 string。我会直观地使用 ProtoInclude 属性来表示“期望这些类型”,但不幸的是它们只是类属性。有人知道我该如何解决这个问题吗?作为背景,公共对象 Key 在这里是出于历史原因(并且到处都是),所以我非常想避免所有重构之母 ;-) 任何机会我都可以将它序列化,甚至强制它序列化为一个字符串?

0 投票
1 回答
750 浏览

protocol-buffers - 将 PrefixStyle 切换为 Fixed32 后反序列化失败

我有一个用于我正在开发的通信库的测试套件,protobuf-net运行正常。所有测试通过。但是如果我将 PrefixStyle 从 Base128 更改为 Fixed32,反序列化将失败。

我从该TryDeserializeWithLengthPrefix函数收到的异常是:

p>

如果我在序列化和反序列化消息时简单地保留 PrefixStyle.Base128,一切都会正常工作。

有谁知道可能会发生什么?

0 投票
4 回答
8855 浏览

datetime - 在协议缓冲区中使用小数和日期时间的最佳方法是什么?

我想找出存储协议缓冲区支持的列表中未包含的一些常见数据类型的最佳方法是什么。

  • 日期时间(秒精度)
  • 日期时间(毫秒精度)
  • 具有固定精度的小数
  • 精度可变的小数
  • 很多布尔值(如果你有很多它们,由于它们的标签,看起来你每个人都会有 1-2 个字节的开销。

这个想法也很容易将它们映射到相应的 C++/Python/Java 数据类型。

0 投票
1 回答
540 浏览

blob - 将 mysqlpp::sql_blob 转换为 std::string 是否安全?

我正在从我的 MySQL 数据库中获取一些二进制数据。它以 mysqlpp::sql_blob 类型出现。

恰好这个 BLOB 是一个序列化的 Google Protobuf。我需要对其进行反序列化,以便我可以正常访问它。

这会产生编译错误,因为 ParseFromString() 不适用于 mysqlpp:sql_blob 类型:

但是,如果我强制转换,它可以编译:

这安全吗?由于 mysqlpp 文档中的这个片段,我特别担心:

“因为 C++ 字符串可以很好地处理二进制数据,您可能认为可以使用 std::string 代替 sql_blob,但当前的 String 设计通过 C 字符串转换为 std::string。结果,BLOB 数据被截断在填充 SSQLS 期间第一个嵌入的空字符。如果不完全重新设计 String 或 SSQLS 机制,就无法解决这个问题。

感谢你的协助!

0 投票
9 回答
31955 浏览

maven-2 - 将协议缓冲区集成到 Maven2 构建中

我正在一个现有的、相当普通的 Maven 2 项目中试验协议缓冲区。目前,每次需要更新生成的源时,我都会调用一个 shell 脚本。这显然很麻烦,因为我希望在每次构建之前自动生成源代码。希望不要诉诸可耻的黑客行为。

所以,我的问题有两个:

  1. 远景:是否有适用于 Maven 2 的“Protocol Buffers 插件”可以自动实现上述目标?Google Code 上有一个分支,其作者似乎已经尝试实现这样的插件。不幸的是,它没有通过代码审查或被合并到 protobuf 主干中。因此,该插件的状态是未知的。

  2. 可能更现实:缺少一个实际的插件,我还能如何protoc从我的 Maven 2 构建中调用?我想我可以将现有的 shell 脚本连接到antrun调用或类似的东西中。

个人经验最受赞赏。

0 投票
5 回答
12723 浏览

objective-c - 在 Objective-C 中使用协议缓冲区

在 Objective-C 中开发应用程序时,是否有人使用过Google 的协议缓冲区?

当前是否有任何将.proto文件编译成 Objective-C 的项目,所有 Google 文档都只是指 Java、C++ 或 Python。

0 投票
6 回答
527 浏览

c# - 哪个序列化程序对 .NET 中序列化类型的更改最宽容?

我注意到 XmlSerializer 在向序列化类型添加新成员、删除现有成员等方面更加宽容。

当我使用 BinaryFormatter 执行此操作并尝试反序列化旧数据时,它引发了异常。

还有哪些其他替代方案可以用于宽恕选项,即不抛出异常的方案只是使用默认值、跳过它们等?

协议缓冲区在这方面是否宽容?

0 投票
1 回答
325 浏览

java-me - 如何在 java me 中使用谷歌协议缓冲区?

我已经使用谷歌协议缓冲区设计了一个协议,现在想编写一个 java me 客户端。但是我发现的这种实现受到严格限制。它不允许枚举、嵌套消息,并且非常基本,这违背了使用它的目的。

java-me 是否有协议缓冲区的替代实现。