gRPC Swift
此仓库包含一个gRPC Swift API和代码生成器。
它是为了与Apple的SwiftProtobuf对Protocol Buffers的支持而设计的。这两个项目都包含了用于Google的Protocol Buffer编译器protoc
的代码生成插件,并且都包含构建和运行生成的代码所需的代码库。
提供了gRPC客户端和服务器API和生成的代码,可以使用Xcode或Swift Package Manager构建。支持所有四种gRPC API风格(单向、服务器流式、客户端流式和双向流式),并且可以通过安全(TLS)或不安全的通道连接。
版本
gRPC Swift最近基于SwiftNIO重写,而不是基于gRPC项目提供的核心库。
版本 | 实现 | 分支 | protoc 插件 |
CocoaPod | 支持 |
---|---|---|---|---|---|
1.x | SwiftNIO | main |
protoc-gen-grpc-swift |
gRPC-Swift | 积极开发和支持 |
0.x | gRPC C库 | cgrpc |
protoc-gen-swiftgrpc |
SwiftGRPC | 不再开发;只修复安全漏洞 |
本README的其余部分指gRPC Swift的1.x版本。
支持的平台
gRPC Swift的平台支持与Swift NIO相同,详见Swift NIO支持的平台。
gRPC Swift 1.8.x及更高版本最早支持的Swift版本是5.4。对于1.7.x及更早的版本,最低支持的Swift版本是5.2。
从gRPC Swift 1.8.0开始,支持Swift的并发功能的客户端和服务版本可以使用,并需要Swift 5.6及更高版本。
获取gRPC Swift
gRPC Swift有两个部分:gRPC库和API代码生成器。
获取gRPC库
Swift包管理器
通过Swift包管理器获取gRPC Swift是最优先的方法。只需将包依赖添加到您的Package.swift
dependencies: [
.package(url: "https://github.com/grpc/grpc-swift.git", from: "1.0.0")
]
...并依赖于必要的目标中的"GRPC"
.target(
name: ...,
dependencies: [.product(name: "GRPC", package: "grpc-swift")]
]
Xcode
从Xcode 11开始,可以向Xcode项目添加Swift包依赖项并将目标链接到这些包的产品;这是将gRPC Swift集成到现有xcodeproj
中最简单的方法。
手动集成
或者,可以将gRPC Swift手动集成到项目中
- 构建Xcode项目:
swift package generate-xcodeproj
, - 将生成的项目添加到您的项目中,并
- 添加对
GRPC
的构建依赖。
CocoaPods
gRPC Swift 目前可以通过 CocoaPods 获取。从 CocoaPods 获取。要集成,请在您的 Podfile
中添加以下行
pod 'gRPC-Swift', '~> 1.0.0'
然后,从命令行运行 pod install
并使用您的项目生成的 .xcworkspace
文件。您可能还需要在 Podfile
中添加 use_frameworks!
。
protoc
插件
获取 protoc
、协议缓冲区编译器,的二进制版本可从 GitHub 获取。
要构建插件,请在与主目录在同一目录下运行 make plugins
。这使用 Swift 包管理器构建必要的两个插件:生成支持 Protocol Buffer 代码的 protoc-gen-swift
以及生成 gRPC 接口代码的 protoc-gen-grpc-swift
。
要安装这些插件,只需将主目录中出现的两个可执行文件(protoc-gen-swift
和 protoc-gen-grpc-swift
)复制到您的 PATH
环境变量的一部分目录中。或者,您可以在使用 protoc
时指定插件的全路径。
或者,您可以通过在 Podfile
中添加以下行来获取插件的最新预编译版本
pod 'gRPC-Swift-Plugins'
随后,插件将位于 Pods/gRPC-Swift-Plugins/
文件夹中。
Homebrew
插件可从 homebrew 获取,并可以使用以下命令安装
$ brew install swift-protobuf grpc-swift
示例
gRPC Swift 提供了一系列教程和示例。它们分布在两个目录中
/Sources/Examples
包含无需额外依赖的示例,可以使用 Swift 包管理器构建。/Examples
存放依赖于外部依赖或者可能不能由 Swift 包管理器构建的示例(例如 iOS 应用)。
其中一些示例附有教程,包括
- 创建和运行您的第一个 gRPC 服务的快速入门指南 快速入门指南。
- 涵盖使用所有四种调用类型创建和实施 gRPC 服务的入门教程,包括如何设置和运行服务器以及在生成的客户端中使用代码调用它 基本教程。
- 拦截器教程,涵盖如何在 gRPC Swift 中创建和使用拦截器 拦截器。
文档
目录 docs
包含文档,包括
docs/plugin.md
中protoc
插件的选项- 如何配置 TLS
docs/tls.md
- 如何配置 keep-alive
docs/keepalive.md
- 在
docs/apple-platforms.md
中对苹果平台和 NIO 传输服务的支持
安全
请参阅 SECURITY.md。
许可证
gRPC Swift 按照与 gRPC 相同的许可证发布,并重复在 LICENSE 中。
贡献
请参与进来!我们的贡献指南。