苹果开源了Swift版Netty:SwiftNIO
极客时间编辑部
讲述:丁婵大小:1.41M时长:03:04
近日,苹果开源了一款基于事件驱动的跨平台网络应用程序开发框架 SwfitNIO,它有点类似 Netty,但开发语言使用的是 Swift。苹果称 SwfitNIO 的目标是帮助开发者快速开发出高性能且易于维护的服务器端和客户端应用协议。
实际上,SwfitNIO 是一个底层工具,用于开发高性能的网络应用程序,作为“每连接一个线程”的替代方案。
为了提升性能,SwfitNIO 使用了非阻塞 IO,这与阻塞式 IO 差别很大,因为不管是往网络上发送数据还是从网络上接收数据,应用程序都无需等待,系统内核会在有可操作的 IO 时通知 SwfitNIO。
据介绍,SwfitNIO 并不会提供类似 Web 框架那样的解决方案,而是致力于为上层框架提供底层的构建块。在开发 Web 应用程序的时候,大部分开发者不会直接使用 SwfitNIO,他们会从 Swift 生态系统众多的 Web 框架中选择一个。不过,这些框架中的大部分都使用了 SwfitNIO。
SwfitNIO 包含了几种基本构建块,所有的 SwfitNIO 应用程序都是由这几种组件组成的。
EventLoop:这是 SwfitNIO 最基本的 IO 原语,它等待事件的发生,在发生事件时触发某种回调操作。
EventLoopGroup:提供了一种机制用于在各个 EventLoop 间分发工作负载。
Channel:负责管理文件描述符的生命周期,并处理发生在文件描述符上的事件:每当 EventLoop 检测到一个与相应的文件描述符相关的事件,就会通知 Channel。
ChannelHandler:负责处理“inbound”事件,例如从 socket 读取数据、关闭 socket 或者其他由远程发起的事件。
Bootstrap:SwiftNIO 提供了一些 Bootstrap 对象,用于简化 Channel 的创建。有些 Bootstrap 对象还提供了其他的一些功能,比如支持 Happy Eyeballs。
ByteBuffer:一种快速的 Copy-On-Write 字节缓冲器,是大部分 SwiftNIO 应用程序的关键构建块。
SwiftNIO 的目标是要成为强大的网络应用程序开发框架,但并不想为所有的层次抽象提供完美的解决方案。它主要专注在基本的 IO 原语和底层的协议实现上,将其他层次的抽象留给广大的社区去构建。
对性能有很高要求的应用程序可能会直接使用 SwiftNIO,减少上层抽象所带来的开销。它可以帮助这些应用程序在提升性能的同时降低维护成本。SwiftNIO 还为某些场景提供了有用的抽象,高性能的网络服务器可以直接使用这些抽象。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论