NIO 传输服务

SwiftNIO 提供扩展,以支持 Apple 平台作为一等公民。

关于 NIO 传输服务

NIO 传输服务是 SwiftNIO 的一个扩展,它通过使用 Network.framework 提供网络连接,并使用 Dispatch 提供并发,从而为 Apple 平台提供一等公民支持。NIOTS 提供了一个替代的 EventLoopEventLoopGroup 和几个替代的 Channels 和 Bootstraps。

除了为 Apple 平台提供一等公民支持外,NIO 传输服务还利用 Network.framework 更丰富的 API,从而提供比 NIO 应用程序通常可用的更多的网络行为洞察力。这包括等待连接直到网络路由可用的能力,以及直接构建到 Network.framework 中的所有额外的代理和 VPN 支持。

所有常规的 NIO 应用程序都应该可以与 NIO 传输服务一起正常工作,只需更改使用的事件循环和引导程序即可。

为什么选择传输服务?

Network.framework 是 Apple 对 提议的 sockets 后 API 的参考实现,该 API 当前正在 IETF 的传输服务工作组 (taps) 中进行开发。为了表明像 Network.framework 这样的接口的长期未来,我们决定将此模块称为 NIOTransportServices。此外,NIONetworkFramework 作为名称对我们没有太大吸引力。

如何使用?

NIO 传输服务主要使用 SwiftPM 作为其构建工具,因此我们也建议使用它。 如果你想在自己的项目中依赖 NIO 传输服务,只需将一个 dependencies 子句添加到你的 Package.swift 中

dependencies: [
    .package(url: "https://github.com/apple/swift-nio-transport-services.git", from: "1.13.0")
]

然后将 NIOTransportServices 模块添加到你的目标依赖项中。

如果你的项目被设置为 Xcode 项目,并且你正在使用 Xcode 11+,你可以通过点击 File -> Swift Packages -> Add Package Dependency 将 NIO 传输服务作为依赖项添加到你的 Xcode 项目中。在即将出现的对话框中,请输入 https://github.com/apple/swift-nio-transport-services.git 并单击 Next 两次。最后,确保选择了 NIOTransportServices 并单击完成。现在你将能够在你的项目中 import NIOTransportServices

支持的平台

NIOTransportServices 在支持 Network.framework 的地方都受支持:macOS 10.14+、iOS 12+、tvOS 12+ 和 watchOS 6+。

为了允许依赖项在使用 NIOTransportServices 可用时使用它,并在不可用时回退到 NIO,所有代码都位于 import guards 后面,检查 Network.framework 的可用性。因此,NIOTransportServices 可以在 Network.framework 不可用 的平台上构建。NIOTransportServices 可以在 macOS 10.12+、iOS 10+、tvOS 10+、watchOS 6+ 和 Linux 上构建,但仅在 macOS 10.14+、iOS 12+、tvOS 12+ 和 watchOS 6+ 上才具有功能性。

版本控制

就像 SwiftNIO 系列的其余部分一样,swift-nio-transport-services 遵循 SemVer 2.0.0,并使用单独的文档声明 SwiftNIO 的公共 API

swift-nio-transport-services 1.x

swift-nio-transport-services 1.x 版本是 SwiftNIO 2 系列存储库的一部分,除了 swift-nio、Swift 5.7 和支持 Network.framework 的 Apple OS 之外,没有任何依赖项。作为最新版本,它位于 main 分支上。

要依赖 swift-nio-transport-services ,请将以下内容放入你的 Package.swiftdependencies

.package(url: "https://github.com/apple/swift-nio-transport-services.git", from: "1.0.0"),

SwiftNIO 传输服务的最新版本支持 Swift 5.7 及更高版本。 SwiftNIO 传输服务版本支持的最低 Swift 版本如下详述

SwiftNIO Extras 最低 Swift 版本
1.0.0 ..< 1.11.0 5.0
1.11.0 ..< 1.12.0 5.2
1.12.0 ..< 1.15.0 5.4
1.15.0 ..< 1.17.0 5.5.2
1.17.0 ..< 1.19.0 5.6
1.19.0 ..< 1.21.0 5.7
1.21.0 ... 5.8

swift-nio-transport-services 0.x

旧版 swift-nio-transport-services 0.x 是 SwiftNIO 1 系列存储库的一部分,并且适用于 Swift 4.1 及更高版本。 源代码可以在 swift-nio-transport-services-swift-4-maintenance 分支上找到。

开发 NIO 传输服务

在很大程度上,NIO 传输服务开发与其他任何 SwiftPM 项目一样简单。 也就是说,在您贡献之前,我们确实有一些值得理解的流程。 有关详细信息,请参见此存储库中的 CONTRIBUTING.md

请注意,NIO 传输服务的所有工作都受 SwiftNIO 行为准则的约束。