#grpc #bindings #tls #rpc #wrapper #client #rpc-framework

sys grpcio-sys

gRPC C核心库的FFI绑定

38个版本

0.13.0+1.56.2-patched2023年8月25日
0.12.1+1.46.5-patched2023年2月14日
0.12.0+1.46.5-patched2022年11月4日
0.10.3+1.44.0-patched2022年6月28日
0.1.0 2017年7月27日

#30#rpc-framework

Download history 2909/week @ 2024-03-14 2729/week @ 2024-03-21 3361/week @ 2024-03-28 2611/week @ 2024-04-04 2836/week @ 2024-04-11 3024/week @ 2024-04-18 2323/week @ 2024-04-25 2542/week @ 2024-05-02 3204/week @ 2024-05-09 2428/week @ 2024-05-16 2352/week @ 2024-05-23 2987/week @ 2024-05-30 2622/week @ 2024-06-06 2445/week @ 2024-06-13 2299/week @ 2024-06-20 1719/week @ 2024-06-27

9,844 每月下载量
用于 grpcio

Apache-2.0

26MB
530K SLoC

C++ 323K SLoC // 0.1% comments C 81K SLoC // 0.1% comments Python 41K SLoC // 0.2% comments Bazel 30K SLoC // 0.1% comments Go 19K SLoC // 0.1% comments M4 10K SLoC // 0.2% comments Shell 7.5K SLoC // 0.5% comments Rust 5K SLoC // 0.0% comments Bitbake 4.5K SLoC // 0.1% comments Forge Config 2.5K SLoC // 0.6% comments Swift 2K SLoC // 0.0% comments Lua 1.5K SLoC // 0.1% comments Batch 861 SLoC // 0.0% comments Ruby 560 SLoC // 0.2% comments PHP 335 SLoC // 0.8% comments XSL 186 SLoC C# 181 SLoC // 0.3% comments Perl 155 SLoC // 0.1% comments Automake 128 SLoC // 0.2% comments Java 120 SLoC // 0.4% comments Cython 95 SLoC // 0.1% comments PowerShell 93 SLoC // 0.2% comments Pan 44 SLoC // 0.1% comments Alex 20 SLoC AWK 18 SLoC // 0.3% comments NuGet Config 7 SLoC

包含(JAR文件,55KB)gradle-wrapper.jar,(模糊的autoconf代码,25KB)configure.ac,(模糊的autoconf代码,1KB)configure.ac

gRPC-rs

gRPC-rsgRPC Core的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 - 程序化生成

程序化生成可以用于通过您的 build.rs 从 proto 文件生成 Rust 模块,使用 protoc-grpcio

更多信息和示例请参阅 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-rs 随带 gRPC Core,默认使用 BoringSSL 而不是 OpenSSL。这可能会导致符号冲突和/或缺少符号,因为您的其他依赖项使用了 OpenSSL。为了解决这个问题,您可以指定 "openssl" 在您的 Cargo.tomlgprcio 功能列表中,这需要 openssl (> =1.0.2)。例如。

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

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

性能

请参阅 基准测试 了解如何自行运行基准测试。

交叉编译

请参阅 交叉编译

贡献

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

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

$ cargo xtask bindgen

依赖项

~0.8–4.5MB
~85K SLoC