gRPC Swift
此仓库包含 gRPC Swift API 和代码生成器。
它旨在与 Apple 的 SwiftProtobuf 对 Protocol Buffers 的支持一起使用。这两个项目都包含用于 Google's Protocol Buffer 编译器 protoc
的代码生成插件,并且都包含构建和运行生成的代码所需的支持代码库。
提供 gRPC 客户端和服务器双方的 API 和生成代码,可以与 Xcode 或 Swift Package Manager 一起构建。支持所有四种 gRPC API 风格(单向、服务器流、客户端流和双向流),并且可以通过安全(TLS)或非安全通道建立连接。
版本
与由 gRPC 项目 提供的核心库相比,gRPC Swift 最近已经基于 SwiftNIO 重新编写。
版本 | 实现 | 分支 | 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及更新的最早支持版本是 5.4。对于1.7.x及更早版本,最旧的受支持Swift版本是 5.2。
从gRPC Swift 1.8.0开始,提供了使用Swift Concurrency支持的客户端和服务的版本,这需要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 版本开始,可以将 Swift 包依赖项添加到 Xcode 项目中,并链接这些包的目标产品;这是将 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
插件
获取Protocol Buffer编译器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
插件选项docs/tls.md
中如何配置 TLSdocs/keepalive.md
中如何配置 keepalivedocs/apple-platforms.md
对苹果平台和 NIO 传输服务的支持
安全
请参阅 SECURITY.md。
许可协议
gRPC Swift 根据gRPC的相同许可协议发布,在LICENSE中重复。
贡献
请积极参与!请参阅我们的贡献指南。