2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

Vapor 5 将实现 Swift 服务器端开发

  • 2024-10-15
    北京
  • 本文字数:950 字

    阅读完需:约 3 分钟

Vapor 5 将实现 Swift 服务器端开发

自当前版本发布 4 年多以来,Swift 服务器端开发框架 Vapor 的幕后团队一直在为 Vapor 5 可以利用 Swift 6 的并发能力以及框架的未来发展打基础。该框架的 Alpha 版本计划在 Swift 6 正式发布时发布。


Vapor 5 的主要目标是支持完全结构化并发的原生 API,采用 Swift 生态系统中更为现代化的包,以及完全重写 WebSocket 和 MultipartKit API。


采用结构化并发意味着 Vapor 5 将抛弃在 Vapor 3 中引入的EventLoopFuture,那也是 Vapor 4 中基于async/await的 API 的基础。取而代之,Vapor 5 将从一开始就使用结构化并发,而且会完全弃用EventLoopFuture,从而简化代码推理,并简化 Xcode 的高级结构化并发诊断。


Vapor 5 还将利用一些近年来变得非常流行的第三方库,包括一个启动和停止服务的库 Swift Service Lifecycle;一个为 HTTP 请求和响应提供一组通用表示的库 Swift HTTP Types;以及一个基于 Hummingbird 的新 HTTP 服务器,它将支持 gRPC、异步请求 / 响应体流式传输和 SSE。此外,Vapor 5 将迁移到 Swift Foundation。这是一个轻量级的基础层,取代了 iOS 和 macOS 提供的 Foundation API。Vapor 团队表示,这将在所有平台上提供一致的行为,并减少可能给多平台开发者带来的困惑。


关于 Vapor 5,最后需要说明的一点是,它将引入新的 WebSocket 和 MultipartKit API 实现。MultipartKit 的当前实现有一个主要的限制是不支持 multipart 请求 / 响应体的流式传输,这使得它很难处理非常大的文件或像 NIOFileSystem 这样的 API。Vapor 5 的新实现将解决这个问题。类似地,当前的 WebSocket API 在async-await领域很难使用,新版本将提供一个更容易使用的新 API。


Vapor 由 4 个主要组件组成,包括一个核心包,用于处理路由、JSON 编码 / 解码和管理 HTTP 请求;Fluent,让开发人员可以使用 noSQL 数据库创建数据模型;JWT,用于在 Swift 中创建签名和验证 JSON Web 令牌;Leaf,一个可以从简单语法生成 HTML 的模板引擎。


Vapor 在 GitHub 上有超过 24k 的星星和近 250 个贡献者,它似乎是 用 Swift 构建 HTTP Web 应用程序或 API 时最受欢迎的选项。


如前所述,Vapor 5 的早期版本将与 Swift 6 一起发布,主要是提供一个纯异步技术栈,并删除所有的EventLoopFuture API。


原文链接:

https://www.infoq.com/news/2024/09/swift-vapor-5-roadmap/

2024-10-15 08:154625

评论

发布
暂无评论
发现更多内容

Maven的爱恨情仇

xcbeyond

Java maven

2.3.1 理解动态代理 -《SSM深入解析与项目实战》

谙忆

Windows AD 保姆级配置NTP服务器教程

BigYoung

时间 AD ntp Windows Server 2012 R2

芯片破壁者(十二.下):青瓦台魔咒与半导体“死亡谷”

脑极体

Facebook开源的数据Mock:Memisis详解

陈磊@Criss

重磅消息,我国数字人民币将在京津冀等具备条件地区试点

CECBC

数字货币 货币

Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

陈磊@Criss

图解23种设计模式——前方高能,前端切图仔请务必抓好方向盘

执鸢者

typescript 大前端 设计模式

非科班学习编程一定得知道这几个网站!

我是程序员小贱

NetPerf揭示容器间是高速路还是林荫小路

陈磊@Criss

从实际案例讲 Deno 的应用场景

keelii

Java typescript deno

2.3.2 JDK动态代理 -《SSM深入解析与项目实战》

谙忆

[修复 Webpack 官方 Bug] 提取CSS时的依赖图修正

分一

大前端 webpack 编译优化 源码刨析

源码分析 | 咋嘞?你的IDEA过期了吧!加个Jar包就破解了,为什么?

小傅哥

Java 字节码插桩 asm bytebuddy

微服务框架 - 模块功能设计篇

superman

为什么会是Docker?

架构精进之路

Docker

Flink 中的应用部署:当前状态与新应用模式

Apache Flink

flink

Serverless:为我们到底带来了什么

刘宇

Serverless 云原生

Swagger 这一个文章就够了

陈磊@Criss

Vue项目起步

JackWangGeek

Vue

6种快速统计代码执行时间的方法

Bruce Duan

java统计时间 currentTimeMillis nanoTime StopWatch

手撕二分查找及其变种,就是干!

我是程序员小贱

实用心理学—没用你打我!

代码制造者

职场 职场搞笑 信息技术 人工

微服务框架-模块需求篇

superman

微博基于 Flink 的机器学习实践

Apache Flink

flink

从北京降雨的复盘中,我发现了企业SD-WAN网络的秘密

脑极体

中本聪原始比特币论文解读:点对点的电子现金系统

韩超

比特币 区块链

用Ant实现Java项目的自动构建和部署

陈磊@Criss

【写作群星榜】8.1~8.14 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

LeetCode题解:88. 合并两个有序数组,splice合并数组+sort排序,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Django的Models更新时,不触发Signals解决办法

BigYoung

django singals 信号机制 update 更新

Vapor 5 将实现 Swift 服务器端开发_云端开发_Sergio De Simone_InfoQ精选文章