Protobuf 包声明

问题描述 投票:0回答:2

我有一个原始文件,其中包含一些消息的定义。我在原始文件的开头声明了

package com.myorganization
。例如,该文件中有
message A
声明。如果我序列化该消息,该消息的接收者具有相同的
message A
定义,但它驻留在不同的包和不同的原型文件中,并且可能使用不同的语言。接收器会反序列化吗
message A

protocol-buffers
2个回答
1
投票

如果两个消息定义相同,那么可以。字段编号匹配很重要;如果字段名称不同,那么就二进制格式而言,这实际上并不重要。


0
投票

重要的一个地方是该消息是否封装在

Any
消息中。 Any
消息
序列化为:

Any 包含任意序列化消息作为字节,以及充当该消息类型的全局唯一标识符并解析为该消息类型的 URL

给定消息类型的默认类型 URL 为

type.googleapis.com/_packagename_._messagename_

因此,如果阅读器没有相同的包名称,那么它将无法找到适当的消息来解码

Any
有效负载。我相信您可以使用自定义消息查找来配置阅读器,但机制和功能因实现而异。

© www.soinside.com 2019 - 2024. All rights reserved.