【问题标题】:Protobuf package declarationProtobuf 包声明
【发布时间】:2017-04-05 02:29:53
【问题描述】:

我有一个包含一些消息定义的原型文件。我在 proto 文件的开头声明了package com.myorganization。例如,该文件中有 message A 声明。如果我序列化该消息并且该消息的接收者具有相同的message A 定义,但它位于不同的包和不同的原始文件中,并且可能使用不同的语言。接收者会反序列化message A吗?

【问题讨论】:

    标签: protocol-buffers


    【解决方案1】:

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

    【讨论】:

    • 问题其实是关于包名是否是protobuf中消息名的一部分?
    • 这些名称根本没有作为二进制格式的一部分进行序列化,因此在您上面的问题中,发送者和接收者认为名称是什么并不重要。包名和消息名用于引用代码中的消息类型,而不是实际的二进制格式。
    • 那么只有消息结构很重要?(类型和字段编号)如果即使在一个 proto 文件中也有 2 条不同名称的消息,它们可以使用不同的消息进行序列化/反序列化吗?
    • 没错,只有消息结构很重要,只有类型和字段编号。是的,您可以在同一个 .proto 文件中包含两条不同的消息,并将一条消息序列化为一条消息并将其反序列化为另一条消息,只要它们的消息结构兼容。
    猜你喜欢
    • 2016-06-18
    • 2021-12-06
    • 2013-08-17
    • 2012-11-05
    • 2011-04-25
    • 2013-11-13
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多