#grpc #protobuf-compiler #protobuf #compiler #rpc-framework

bin+lib grpcio-compiler

gRPC 编译器 for grpcio

22 个版本 (13 个重大更改)

0.13.0 2023 年 8 月 25 日
0.12.1 2023 年 2 月 14 日
0.12.0 2022 年 11 月 4 日
0.10.0 2022 年 3 月 2 日
0.1.0 2017 年 7 月 27 日

1327网络编程

Download history 1609/week @ 2024-04-07 1900/week @ 2024-04-14 1832/week @ 2024-04-21 1099/week @ 2024-04-28 1801/week @ 2024-05-05 1630/week @ 2024-05-12 1684/week @ 2024-05-19 1435/week @ 2024-05-26 1810/week @ 2024-06-02 1324/week @ 2024-06-09 1372/week @ 2024-06-16 1270/week @ 2024-06-23 1191/week @ 2024-06-30 1182/week @ 2024-07-07 1713/week @ 2024-07-14 1542/week @ 2024-07-21

每月下载量 5,711
用于 27 个仓库 (直接使用 3 个)

Apache-2.0

48KB
1K SLoC

gRPC-rs

gRPC-rsgRPC 核心库 的 Rust 封装。 gRPC 是一个高性能、开源的通用 RPC 框架,以移动设备和 HTTP/2 为先。

Crates.io docs.rs Build Status Build Status

状态

该项目仍在开发中。以下带有勾选的项目功能已支持

  • 基本异步单例/流式调用
  • SSL
  • 泛型调用
  • 连接级别压缩
  • 互操作性测试
  • QPS 基准测试
  • 自定义元数据
  • 健康检查
  • 反射
  • 身份验证
  • 负载均衡,客户端完全支持,服务器端负载报告尚未实现。

先决条件

  • CMake >= 3.8.0
  • Rust >= 1.36.0
  • binutils >= 2.22
  • 如果需要编译时生成绑定,则需 LLVM 和 Clang >= 3.9。

对于 Linux 和 MacOS,您还需要安装 gcc 7.3+(或 clang 6+)。

为 x86_64/arm64 Linux 预生成了绑定。对于其他平台,绑定在编译时生成。

对于 Windows,您还需要安装以下软件

  • Active State Perl
  • yasm
  • Visual Studio 2015+

构建

$ cargo xtask submodule # if you just cloned the repository
$ cargo build

链接 OpenSSL 错误

如果您在构建项目时使用 gRPC-rs 时遇到链接器错误,请转到 openssl 功能部分以获取可能的修复方案。

用法

从 proto 文件生成源代码

选项 1 - 手动生成

  1. 安装 protobuf 编译器
$ cargo install protobuf-codegen
  1. 安装 gRPC 编译器
$ cargo install grpcio-compiler
  1. 生成源代码
$ protoc --rust_out=. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_rust_plugin` example.proto

选项 2 - 编程生成

编程生成可以使用 protoc-grpcio 通过您的 build.rs 生成从 proto 文件到 Rust 模块的模块。

有关更多信息示例,请参阅 README

要将此项目作为依赖项包含

[dependencies]
grpcio = "0.13"

功能 boringssl

boringssl 功能启用了对 TLS 加密和一些认证机制的支持。当您不需要它时,例如在内网工作时,您可以通过以下配置来禁用它

[dependencies]
grpcio = { version = "0.13", default-features = false, features = ["protobuf-codec"] }

功能 prost-codecprotobuf-codec

gRPC-rs 默认使用 protobuf crate。如果您想使用 prost,可以启用 prost-codec 功能。您可能只想启用这两个功能中的一个。虽然 grpcio 同时启用这两个功能没有问题,但 grpcio-compiler 可能无法按预期工作。

功能 opensslopenssl-vendored

gRPC-rsgRPC Core 一起捆绑,默认使用 BoringSSL 而不是 OpenSSL。这可能会导致符号冲突和/或缺少符号的问题,因为您的另一个依赖项使用了 OpenSSL。要解决这个问题,您可以通过在 Cargo.toml 中为 gprcio 指定 "openssl" 来告诉 gRPC-rs 也使用 OpenSSL,这需要 openssl (>=1.0.2)。例如。

[dependencies]
grpcio = { version = "0.13", features = ["openssl"] }

openssl-vendored 功能与 openssl 功能相同,但它将从捆绑的源构建 openssl。

性能

有关如何自行运行基准测试的信息,请参阅 基准测试

交叉编译

请参阅 交叉编译

贡献

在发送 PR 之前,请确保格式化和测试代码。

如果 grpc-sys/grpc 中的内容已更新,您可能需要重新生成绑定

$ cargo xtask bindgen

依赖项

~0–10MB
~105K SLoC