Wire:基於安卓的谷歌的Protocol Buffers的開源實現
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 系列 (1) - 什麼是Protocol Buffers?Protocol
- Protocol Buffers 在 iOS 中的使用ProtocoliOS
- 基於Flutter實現的 IT換換(已開源)Flutter
- 谷歌將在 Kotlin 中支援 Protocol Buffers 資料格式谷歌KotlinProtocol
- 使用 Protocol Buffers 代替 JSON 的五個原因ProtocolJSON
- Protocol Buffers 3 學習Protocol
- 基於資源的HTTP Cache的實現介紹HTTP
- 基於Vue實現可以拖拽排序的樹形表格(已開源)Vue排序
- 基於.NET 5實現的開源通用許可權管理平臺
- Python 在Python中使用Protocol Buffers基礎介紹PythonProtocol
- 安卓來源於中國的鐵證安卓
- 還在用JSON? Google Protocol Buffers 更快更小 (實踐篇)JSONGoProtocol
- 資源 | Facebook開源DrQA的PyTorch實現:基於維基百科的問答系統PyTorch
- C#語言下使用gRPC、protobuf(Google Protocol Buffers)實現檔案傳輸C#RPCGoProtocol
- [資源]基於 Pytorch 的 TorchGAN開源了!PyTorch
- 基於開源Tars的動態負載均衡實踐負載
- 傳說中的開源 vs 現實中的開源
- 基於小米開源 Soar 的 Hyperf 元件元件
- 基於efcore的分表元件開源元件
- 基於jquery實現的ExceljQueryExcel
- 基於JVMTI的Agent實現JVM
- 谷歌開源的 GAN 庫–TFGAN谷歌
- 基於Flutter實現的仿開眼視訊AppFlutterAPP
- Web新趨勢:HTML over-the-wire的實現Unpoly框架WebHTML框架
- 基於微服務框架Micronaut和Eventuate Tram實現分散式事務的開源案例微服務框架分散式
- [開源] gev (支援 websocket 啦): Go 實現基於 Reactor 模式的非阻塞網路庫WebGoReact模式
- 開源一個自用的Android IM庫,基於Netty+TCP+Protobuf實現。AndroidNettyTCP
- [開源]基於WPF實現的Gif圖片分割器,提取GIf圖片中的每一幀
- 基於laravel的流程引擎偷偷開源了Laravel
- 基於Masstransit實現Eventbus的功能
- 基於 SplPriorityQueue 實現的排序方法排序
- 基於Python的Akka實現Python
- 實現基於角色的授權
- 基於 JMeter的壓測工具的實現JMeter
- Protocol Buffers學習(4):更多訊息型別Protocol型別
- 如何在 PHP 中處理 Protocol Buffers 資料PHPProtocol
- 基於 Github 平臺的 .NET 開源專案模板. 嘎嘎實用!Github
- 基於註解的springboot+mybatis的多資料來源元件的實現Spring BootMyBatis元件