写点什么

Kotlin HTTP Toolkit Ktor 3.0 改进性能,并支持服务器发送事件

作者:Sergio De Simone

  • 2024-11-21
    北京
  • 本文字数:870 字

    阅读完需:约 3 分钟

Kotlin HTTP Toolkit Ktor 3.0改进性能,并支持服务器发送事件

Ktor 是一个原生的 Kotlin 框架,可用于创建异步 HTTP 服务器和客户端应用程序。Ktor 3.0 已发布。该版本采用了 kotlinx-io,虽然带来了一些破坏性更改,但性能却有所提升,并且增加了服务器发送事件、CSFR、从 ZIP 文件提供静态资源等特性。


kotlinx-io 是围绕Buffer这个抽象概念构建的底层 I/O 库。Buffer是一个可变的字节序列,它的工作方式和队列类似。也就是说,你可以向其尾部写入数据,并从其头部读取数据。Ktor 3 的破坏性变化主要影响了底层 IO API,涉及InputOutputByteReadChannelByteWriteChannel等类型。直接使用它们的开发人员需要修改他们的应用程序,迁移到新的 API。


kotlinx-io 的主要好处是提升了性能:


我们减少了 ByteReadChannel、ByteWriteChannel 与网络接口之间不必要的字节复制。这样可以提高字节转换和解析的效率,为未来的性能提升留出空间。


JetBrains 表示,根据他们自己的基准测试,Ktor 的这个新版本显著缩短了文件和套接字操作所需的时间,在某些情况下可缩短 90%。


除了性能提升之外,Ktor 3.0 最重要的变化是支持服务器发送事件。这是一种服务器推送技术,可以创建服务器到客户端的通信通道。在数据以单向流动为主的情况下,尤其是需要规避防火墙阻塞或处理连接中断时,服务器发送事件比 WebSockets 更为可取。另一方面,WebSockets 效率更高,延迟更低。


Ktor 3.0 还提供了其他一些有用的特性,包括支持跨站点请求伪造(CSRF)(可以针对任何给定的路由指定)以及直接从 ZIP 文件提供静态资源的能力。ZIP 文件从基本路径提供,可能会包括子目录,这会反映在 URL 结构中。


关于 Ktor 3,最后一点需要注意的是,Ktor 客户端现在支持将 Wasm 作为构建目标。不过,Kotlin/Wasm 仍处于 Alpha 测试阶段,因此,Ktor 3 中的 Wasm 支持尚未到达生产就绪状态。


要使用 Ktor 启动一个新项目,请访问 Ktor 网站并选择最符合你需求的插件,涉及身份验证、路由、监控、序列化等。如果你想将现有的 Ktor 2 项目改为使用 Ktor 3,请务必阅读 JetBrains 提供的迁移指南。


查看原文链接:

https://www.infoq.com/news/2024/10/ktor-3-kotlin-http-server/

2024-11-21 08:008585

评论

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

基于Serverless实现静态博客访问统计功能

zFish

Serverless AWS Hugo Pulumi

【shell命令】关于mac的open命令

程序员架构进阶

工具 Shell 命令行 28天写作

CSS(三)——简单的网页制作

程序员的时光

CSS 七日更 28天写作

28天瞎写的第二百二十八天:用 UltraEdit 找优越感的故事

树上

28天写作 UltraEdit

Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)

五分钟学大数据

大数据 flink

甲方日常 89

句子

工作 随笔杂谈 日常

没有女友的建议,不会有这家巨头公司

李忠良

28天写作

微信视频号的长视频和短视频 | 视频号28天(18)

赵新龙

28天写作

产品经理训练营 - 第二次作业

Jophie

产品经理训练营

第二周作业-利益相关方

Au revoir

开发质量提升系列:checklist 投产检查列表(下)

罗小龙

代码质量 28天写作 checklist

产品经理训练营-第二周学习总结

月亮 😝

精选算法面试-哈希表III

李孟聊AI

面试 算法

spring中那些让你爱不释手的代码技巧(续集)

Java架构师迁哥

Logi-KafkaManager开源之路:一站式Kafka集群指标监控与运维管控平台

张亮

Java 大数据 kafka 开源 消息队列

Serverless应用开发小记

zFish

DevOps AWS IaC #Serverless Terraform

汽车AI芯片(28天写作 Day18/28)

mtfelix

自动驾驶 28天写作 车规级芯片

产品 0 期 - 第二周作业

vipyinzhiwei

产品经理训练营

第九周作业&总结

胡益

第四课作业

糯米~

静下心来

阿萌

程序人生 28天写作 青城

批判性思维自修课(二)

石君

28天写作 批判性思维

同VLAN不同网段能否ping通

Android硬编解码MediaCodec使用笔记

Changing Lin

android 音视频

2021,你值得看的华为/字节/腾讯/京东/网易/滴滴面经分享

比伯

Java 编程 架构 面试 计算机

项目管理文化建设

Ian哥

28天写作

CSS(四)——CSS高级特性

程序员的时光

CSS 程序员 七日更 28天写作

产品经理训练营作业 01

KingSwim

第二章作业

Deborah

范文写作结构分析之“危险的分工”

JiangX

28天写作

产品质量战略

L3C老司机

Kotlin HTTP Toolkit Ktor 3.0改进性能,并支持服务器发送事件_编程语言_InfoQ精选文章