苹果近日开源了以 Swift 编写的跨平台异步事件驱动的网路应用框架 SwiftNIO ,该框架的目标并非提供给一般开发者,因为从根本上 SwiftNIO 是一个非常低阶的工具。所以苹果希望高阶网路应用框架可以用 SwiftNIO 来提供网路功能,开发者再以这些框架开发应用。
SwiftNIO 的第一个单词为 Swift ,NIO 则是非阻塞(Non-blocking)I/O的缩写。苹果表示,项目主要针对那些使用“ thread-per-connection”模型(每个请求对应一个线程)的并发性效率低下或无法使用的用例。
SwiftNIO 的目标不是提供像 Web 框架那样的高级解决方案,它专注提供基础的 I/O 功能与协定,并成为高阶应用的构建块之一。而 SwiftNIO 非阻塞 I/O 的设计,也有别于多数常见的非阻塞 I/O 模型,SwiftNIO 要求内核在进行 I/O 操作时主动发出通知,而非被动等待资料从网路传送或接收。
SwiftNIO 的目标是支持 Swift 所支持的所有平台。目前,它是在 macOS 和 Linux 上进行开发和测试的,支持以下操作系统版本:
Ubuntu 14.04+
macOS 10.12+