写点什么

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:008719

评论

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

android端音频采集与播放

floer rivor

android 音视频

千万级学生管理系统的<考试试卷>存储方案

唐江

架构实战营

从火星的古海洋,读懂蓝星的数据湖之变

脑极体

ConcurrentHashMap

ltc

ConcurrentHashMap

怎么学

Nydia

学习

Dubbo 负载均衡

青年IT男

dubbo

JavaScript 类型化数组

空城机

JavaScript 大前端 5月日更 类型化数组

❄️【程序员必看系列】开源项目有盈利模式指南

码界西柚

开源 程序员 盈利模式 5月日更

成功产品三要素

lenka

5月日更

url踩坑记录

ES_her0

5月日更

浪潮云向前进一步,又向后让一步

云计算

Golang List, Ring and Map

escray

学习 极客时间 Go 语言 5月日更

分布式事务与分布式系统

邱学喆

分布式事务 raft CAP PAXOS 副本一致性

阿里工作6年,熬到P7就剩这份学习笔记了,已助朋友拿到7个Offer

Java 程序员 架构 面试

明天重新杨帆起航

IT蜗壳-Tango

5月日更

网络攻防学习笔记 Day18

穿过生命散发芬芳

5月日更 网络攻防

数据挖掘从入门到放弃(五)seaborn 的数据可视化

数据社

机器学习 5月日更

从非洲血库到热带雨林:为什么普惠联接是社会的数字化支点?

脑极体

Unix/Linux 编程:网络编程之 线程池

赖猫

Linux Linux服务器开发 Linux网络编程

《冰河的渗透实战笔记》电子书,442页,37万字,正式发布!!

冰河

网络安全 信息安全 渗透测试 网络攻防 互联网技术

docker(centos系统)安装vim工具

liuzhen007

Docker 5月日更

“读万卷书,行万里路”,让你收获一个不平凡的人生

小天同学

读书 成长 旅行 5月日更

5分钟速读之Rust权威指南(四)

wzx

JavaScript rust

Python 协程

若尘

协程 Python编程 5月日更

位列第五大生产要素,大数据该如何突破隐私安全魔咒?

CECBC

架构学习笔记:架构定义

风翱

架构 5月日更

Flutter开发:Failed to retrieve the Dart SDK…的解决方法

三掌柜

5月日更

2千亿级超大模型的构建,能否突破中文场景的极限

这不科技

人工智能 nlp

数字化战争即将开启,区块链将成为有效防护壁垒

CECBC

霸榜GitHub的阿里内部Spring Boot实战文档到底有多强?

Java 架构 面试 微服务

集成学习案例一 (幸福感预测)

容光

数据处理

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