NIO Transport Services
扩展 SwiftNIO 以支持 Apple 平台作为一等公民。
关于 NIO Transport Services
NIO Transport Services 是 SwiftNIO 的扩展,通过使用 Network.framework 提供网络连接,以及 Dispatch 提供并发来为 Apple 平台提供一流的支持。NIOTS 提供了替代的 EventLoop、EventLoopGroup 以及几个替代的 Channels 和引导程序。
除了为 Apple 平台提供一流的支持外,NIO Transport Services 还利用了 Network.framework 丰富了的 API,为网络行为提供比 NIO 应用程序通常可用的更多信息。这包括等待连接直到网络路由可用,以及直接内置于 Network.framework 中的所有额外的代理和 VPN 支持。
所有常规的 NIO 应用程序都可以正常运行 NIO Transport Services,只需更改正在使用的事件循环和引导程序即可。
为什么需要传输服务?
Network.framework 是 Apple 对 IETF 传输服务工作组(taps)正在研究的拟议后套接字 API 的参考实现。为了表示 Network.framework 等接口的长期未来,我们决定将此模块命名为 NIOTransportServices。另外,NIONetworkFramework 这个名字也不太吸引我们。
如何使用?
NIO 传输服务主要使用 SwiftPM 作为构建工具,因此我们建议您也使用 SwiftPM。如果要在您的项目中依赖 NIO 传输服务,只需在您的 Package.swift 文件中添加一个依赖关系声明即可。
dependencies: [
.package(url: "https://github.com/apple/swift-nio-transport-services.git", from: "1.1.1")
]
然后,将 NIOTransportServices 模块添加到您的目标依赖关系中。
如果您的项目配置为 Xcode 项目并且您正在使用 Xcode 11 或更高版本,您可以在 Xcode 项目中添加 NIO 传输服务作为依赖项,方法是单击“文件”-》“Swift 包”-》“添加包依赖项”。在即将出现的对话框中,请输入 https://github.com/apple/swift-nio-transport-services.git
并连续单击两次“下一步”。最后,确保选择 NIOTransportServices
并单击“完成”。现在您可以在项目中 import NIOTransportServices
。
您也可以使用 CocoaPods 在 iOS 项目中通过 SwiftNIO 传输服务。
pod 'SwiftNIO', '~> 2.0.0'
pod 'SwiftNIOTransportServices', '~> 1.0.0'
如果您想使用 Xcode 10 开发 SwiftNIO,您必须生成一个 Xcode 项目
swift package generate-xcodeproj
并将项目作为子项目拖入您的 iOS 项目,在“构建阶段”->“链接二进制库”中添加框架(NIOTransportServices.framework
)。
但是请注意,Network.framework 需要 macOS 10.14+、iOS 12+ 或 tvOS 12+。
支持的平台
NIOTransportServices 支持 Network.framework 支持的平台:macOS 10.14+、iOS 12+、tvOS 12+ 和 watchOS 6+。
为了使依赖关系在 NIOTransportServices 可用的时候使用 NIOTransportServices,并在不可用时回退到 NIO,所有代码都位于检查 Network.framework 可用性的 import 守卫后面。因此,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和一个支持Network.framework
的Apple OS之外,没有其他依赖。作为最新版本,它生活在main
分支上。
要依赖swift-nio-transport-services
,请在您的Package.swift
的dependencies
中添加以下内容
.package(url: "https://github.com/apple/swift-nio-transport-services.git", from: "1.0.0"),
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行为准则的约束。