展会信息港展会大全

苹果开源Swift底层非阻塞I/O框架SwiftNIO
来源:互联网   发布日期:2018-03-16   浏览:129次  

导读:英文原文:Apple Open-sources SwiftNIO, a Low-level Non-Blocking I/O Framework for Swift 在近日举行的 try! Swift 东京大会上,苹果宣布了 SwiftNIO 项目,这是一个用 Swift 编写的、类似 Netty 的非阻塞、跨平台I/O框架。 SwiftNIO 是一个 ......

英文原文:Apple Open-sources SwiftNIO, a Low-level Non-Blocking I/O Framework for Swift

在近日举行的 try! Swift 东京大会上,苹果宣布了 SwiftNIO 项目,这是一个用 Swift 编写的、类似 Netty 的非阻塞、跨平台I/O框架。

SwiftNIO 是一个为开发高性能服务器和客户端而设计的事件驱动的异步网络框架。目前,该框架在 macOS (10.12+)和 Linux(Ubuntu 14.04)上进行开发和测试。据苹果介绍:

SwiftNIO 是一个跨平台的、事件驱动的异步网络框架,用于开发可维护的高性能协议服务器&客户端。

SwiftNIO 旨在成为一个构建网络应用程序和框架的底层工具,致力于提供低开销的I/O原语和协议实现。因此,通常可以将 SwiftNIO 视为一个构造块,用于构建供应用程序使用的高层网络通信框架,或者是供有苛刻要求的应用程序直接使用的高性能框架。通过这种方法,针对大多数网络协议的支持在源码树外被实现出来。按照苹果 SwiftNIO 工程师 Cory Benfield 的说法,虽然 HTTP/1.1 协议的支持在源码树内,但 TLS 支持、Websocket 和 HTTP/2 支持在源码树外。

EventLoop是 SwiftNIO 提供的一个基本抽象。该对象会等待事件,并在事件发生时触发某个回调方法。在理想情况下,会有一个或者两个核心事件循环。为了在事件循环之间分配负载,可以使用EventLoopGroup。在EventLoop之上是Channel和ChannelPipeline。它们提供了一种友好的方式,可以在与特定文件描述符关联的事件到来时发送通知,并调度处理。ChannelHandler提供了管道顺序执行事件处理的步骤。所有的处理器都是在同一个线程中执行,不需要同步,实现起来更简单。这也意味着处理器不能阻塞。SwiftNIO 提供的最高层抽象是Bootstrap,简化特定场景的通道创建,如ServerBootstrap、ClientBootstrap、DatagramBootstrap。要了解所有细节,请查阅官方文档。

在 Package.swift 中添加以下依赖项可以把 SwiftNIO 包含到自己的项目中:

dependencies: [

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

]

此外,SwiftNIO 提供了两个示例 NIOChat 和 NIOEcho,说明该框架的使用方法。

赞助本站

人工智能实验室

相关热词:

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港