跨语言的 RPC 框架,通过代码生成器为多种编程语言构建可互通的客户端与服务端。
- Star
- 26,567
- Fork
- 3,712
- 未关闭 Issue
- 333
- 最近提交
- 5小时前
这是什么?
FlatBuffers 是一个面向内存效率设计的序列化库。数据以二进制缓冲区的形式存储,应用可以原地访问其中的字段,无需先反序列化为对象。在模式演进时,它同时保持前向和后向兼容。
开发者用 .fbs 模式文件描述数据结构,再通过 flatc 编译器为所需语言生成访问代码。项目提供 C、C++、C#、Dart、Go、Java、JavaScript、Kotlin、Lua、PHP、Python、Rust、Swift、TypeScript 等多种语言的代码生成与运行时库。
它支持 Windows、macOS、Linux 和 Android,并可在任何具备较新 C++ 编译器(C++11 及以上)的平台上使用。
核心功能
- 01无需解析或解包,直接访问序列化数据。
- 02通过同一份模式文件为多种语言生成访问代码。
- 03在不同模式版本之间保持前向和后向兼容。
- 04可在 Windows、macOS、Linux 和 Android 上运行。
适用场景
- 在使用不同语言编写的服务或组件之间传递数据。
- 需要快速且少分配内存读取的场景,例如游戏或嵌入式系统。
- 通过内存映射读取大型序列化文件,无需整体加载。
快速上手
- 1
使用 CMake 配置 flatc 的构建
cmake -G "Unix Makefiles" - 2
编译 flatc 编译器
make -j - 3
编写你的模式文件(.fbs),可参考 samples/monster.fbs 示例
- 4
根据模式文件为你使用的语言生成代码
./flatc --cpp --rust monster.fbs
使用前须知
- README 中没有提供 flatc 编译器的包管理器安装方式,需要用 CMake 和 C++ 编译器从源码构建。
标签
常见问题
- flatbuffers 是什么?
- 一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。 FlatBuffers 是一个面向内存效率设计的序列化库。数据以二进制缓冲区的形式存储,应用可以原地访问其中的字段,无需先反序列化为对象。在模式演进时,它同时保持前向和后向兼容。
- flatbuffers 可以免费使用吗?用的什么许可证?
- flatbuffers 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- flatbuffers 还在维护吗?
- 活跃维护中。flatbuffers 最近一次提交是在 2026年10月21日。
- flatbuffers 适合用来做什么?
- 在使用不同语言编写的服务或组件之间传递数据。 需要快速且少分配内存读取的场景,例如游戏或嵌入式系统。 通过内存映射读取大型序列化文件,无需整体加载。
- flatbuffers 怎么安装和运行?
- 使用 CMake 配置 flatc 的构建: cmake -G "Unix Makefiles" 编译 flatc 编译器: make -j 编写你的模式文件(.fbs),可参考 samples/monster.fbs 示例 根据模式文件为你使用的语言生成代码: ./flatc --cpp --rust monster.fbs
- 在哪里获取 flatbuffers?
- 源代码和安装说明在 GitHub 上:https://github.com/google/flatbuffers
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.1万4116C++Apache-2.0更新于 15小时前
用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,基于 Node.js 与 Chromium。
12.3万1.8万C++MIT更新于 昨天
一个用 Go 构建跨平台桌面应用的框架,前端可使用 React、Vue、Svelte 等 Web 技术。
3.7万1893GoMIT更新于 昨天
一款易用、开箱即用的终端文本编辑器,单个静态二进制文件即可运行,可视为 nano 的继任者。
3万1392GoMIT更新于 1小时前
面向 Go 的跨平台 GUI 工具包与应用 API,可用一套代码构建桌面和移动应用。
2.9万1568GoBSD-3-Clause更新于 3天前
一个 C++ 格式化库,提供比 C stdio 和 iostreams 更快、类型安全的替代方案,实现了 C++20 std::format。
2.6万3089C++MIT更新于 3天前