Wire:基于安卓的谷歌的Protocol Buffers的开源实现

21-06-09 banq

Google 的 Protocol Buffers 的开源实现,专为 Android 和 Java 设计。

Protocol Buffers 模式语言和二进制编码均由 Google 定义。Wire 是 Square 的一个独立实现,专为 Android 和 Java 设计。

对于模式中定义的每种消息类型,Wire 都会生成一个不可变的模型类及其构建器。生成的代码看起来像您手工编写的代码:它有文档、有格式并且很简单。Wire 的 API 应该让喜欢Effective Java 的程序员感到宾至如归。

Wire 中有一些有趣的设计决策:

  • Wire 消息声明public final字段而不是通常的 getter 方法。这减少了生成的代码和执行的代码。更少的代码对 Android 程序尤其有益。
  • Wire 避免了大小写映射。picture_urls在模式中声明的字段会产生一个 Java 字段, picture_urls而不是传统的pictureUrls驼峰式大小写。虽然这个名字一开始感觉很别扭,但当你使用grep或更复杂的搜索工具时,它会很棒。在模式、Java 源代码和数据之间导航时不再需要映射。它还为调用代码提供了一个温和的提醒,即 proto 消息有点特殊。
  • 原始类型总是装箱的。如果某个字段不存在,则其值为null。这用于自然可选的字段,例如时期未知的恐龙。由于模式演变,字段也可能为空:如果明天我们在carnivore消息定义中添加一个布尔值,今天的数据将没有该字段的值。

从 3.0.0 版本开始,Wire 可以生成 Kotlin 代码。请参阅 Wire Compiler & Gradle Plugin以了解如何配置您的构建。

更多protocol buffers

猜你喜欢