Questions tagged «protocol-buffers»

协议缓冲区是一种语言无关和平台无关的方式,以一种有效但可扩展的格式对结构化数据进行编码。Google几乎所有内部​​RPC协议和文件格式都使用协议缓冲区。它也是开源gRPC框架使用的默认数据编码。


1
谷歌协议缓冲区与JSON与XML [关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想知道的优点和缺点 Google协议缓冲区 JSON格式 XML格式 我想为两个应用程序实现一个通用框架,一个在Perl中,第二个在Java中。因此,希望创建可以被两种技术(即Perl和Java)使用的通用服务。 两者都是Web应用程序。 请与我分享您对此的宝贵想法和建议。我在Google上看到了很多链接,但都有不同的看法。

2
为什么在协议缓冲区3中删除了必需和可选的内容
我最近gRPC与proto3和一起使用,并且注意到了这一点,required并且optional已在新语法中将其删除。 有人可以解释一下为什么在proto3中删除了必需/可选吗?此类约束似乎对于使定义更健壮很有必要。 语法proto2: message SearchRequest { required string query = 1; optional int32 page_number = 2; optional int32 result_per_page = 3; } 语法proto3: syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; }


3
我可以使用空请求或响应定义grpc调用吗?
proto3中的rpc语法是否允许空请求或响应? 例如,我想要以下内容: rpc Logout; rpc Status returns (Status); rpc Log (LogData); 还是我应该创建一个空类型? message Null {}; rpc Logout (Null) returns (Null); rpc Status (Null) returns (Status); rpc Log (LogData) returns (Null);

9
如何在protobuf 3中定义可选字段
我需要在protobuf(proto3语法)中指定一个带有可选字段的消息。用proto 2语法来说,我要表达的信息是这样的: message Foo { required int32 bar = 1; optional int32 baz = 2; } 据我了解,“可选”概念已从语法原型3中删除(以及必需的概念)。尽管尚不清楚替代方案-使用默认值声明尚未从发送方指定字段,但是如果默认值属于有效值域(例如,考虑布尔类型),则仍会造成歧义。 那么,我应该如何编码上面的消息?谢谢。



3
protobuf与gRPC
我尝试了解protobuf和gRPC以及如何使用两者。您能帮我了解以下内容吗? 考虑到OSI模型,例如Protobuf在第4层在哪里? 通过消息传递来思考“流”是什么,gRPC在做protobuf遗漏的事情是什么? 如果发送者使用protobuf,则服务器可以使用gRPC还是gRPC添加仅gRPC客户端可以提供的内容? 如果gRPC可以使同步和异步通信成为可能,那么Protobuf仅用于编组,因此与状态无关-是对还是错? 我可以在通信的前端应用程序中使用gRPC而不是REST或GraphQL吗? 我已经知道-或假设我知道- 原虫 用于数据交换的二进制协议 由Google设计 在客户端和服务器上使用生成的“结构”(如描述)来取消/编组消息 gRPC 使用protobuf(v3) 再次来自Google RPC调用框架 也使用HTTP / 2 可以进行同步和异步通讯 对于已经使用该技术的人,我再次假定这是一个简单的问题。我仍然要感谢您对我耐心等待并帮助我。我也非常感谢网络对这些技术的深入研究。

2
TensorFlow保存到文件中/从文件中加载图形
根据到目前为止的经验,有几种不同的方法可以将TensorFlow图转储到文件中,然后再将其加载到另一个程序中,但是我无法找到关于它们如何工作的清晰示例/信息。我已经知道的是: 使用a将模型的变量保存到检查点文件(.ckpt)中,tf.train.Saver()并在以后还原它们(源) 将模型保存到.pb文件,然后使用tf.train.write_graph()和tf.import_graph_def()(source)将其加载回 从.pb文件加载模型,对其进行重新训练,然后使用Bazel将其转储到新的.pb文件中(源) 冻结图形以将图形和权重保存在一起(源) 使用as_graph_def()保存模型,并为权重/变量,它们映射到常数(源) 但是,我无法清除有关这些不同方法的几个问题: 关于检查点文件,它们仅保存模型的训练权重吗?是否可以将检查点文件加载到新程序中并用于运行模型,还是仅将它们用作在特定时间/阶段将权重保存在模型中的方法? 关于tf.train.write_graph(),权重/变量也被保存吗? 关于Bazel,它只能保存到.pb文件中或从中加载以进行重新训练吗?是否有一个简单的Bazel命令只是将图形转储到.pb中? 关于冻结,是否可以使用来加载冻结图tf.import_graph_def()? TensorFlow的Android演示从.pb文件加载到Google的Inception模型中。如果我想替换自己的.pb文件,该怎么做?我需要更改任何本机代码/方法吗? 通常,所有这些方法之间到底有什么区别?或更广泛地说,/。as_graph_def()ckpt / .pb有什么区别? 简而言之,我正在寻找一种将图形(如各种操作等)及其权重/变量都保存到文件中的方法,然后可以将其用于将图形和权重加载到另一个程序中,以供使用(不一定要继续/训练)。 关于此主题的文档不是很简单,因此,非常感谢您提供任何答案/信息。

4
协议缓冲区与JSON或BSON的比较[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 11个月前关闭。 改善这个问题 是否有人对协议缓冲区,BSON(二进制JSON)或JSON的性能有任何了解? 电线尺寸 序列化速度 反序列化速度 这些似乎是通过HTTP使用的良好二进制协议。我只是想知道从长远来看,对于C#环境哪个更好。 这是我正在阅读的有关BSON和协议缓冲区的一些信息。

3
如何分配重复字段?
我在python中使用协议缓冲区,并且有一条Person消息 repeated uint64 id 但是当我尝试为它赋值时: person.id = [1, 32, 43432] 我收到一个错误:Assigment not allowed for repeated field "id" in protocol message object 如何为重复字段分配值?


8
如何将gRPC定义的API引入网络浏览器
我们想为我们的gRPC-microservices构建一个Javascript / HTML gui。由于浏览器端不支持gRPC,因此我们考虑使用Web套接字连接到node.js服务器,该服务器通过grpc调用目标服务。我们很难找到一个完美的解决方案来做到这一点。特别是,由于我们使用gRPC流在微服务之间推送事件。似乎我们需要第二个RPC系统,仅用于在前端和node.js服务器之间进行通信。这似乎有很多开销,必须维护其他代码。 有没有人有做过这样的事情的经验或有解决办法的想法?

3
protobuf文本格式是什么样的?
Google协议缓冲区不仅可以以二进制格式序列化,还可以以text序列化。但是,我很难找到此类文本的示例。它会是什么样子? 预期答案:一个示例,涵盖protobuf IDL / proto文件允许的所有功能,包括文本格式的protobuf样本包。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.