AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

念念不忘,必有回响!6月更文活动的一些总结

编程三昧

程序员 程序人生 代码人生

“懂行人”合力共建“强富美高”数字经济助力千载金陵的数字一跃

脑极体

李某逆道而行闭关三月,直接四杀斩获阿里/腾讯/京东/百度等大厂offer

Java架构师迁哥

在线HTML实体转字符串工具

入门小站

工具

低代码“三合一”模式,解决产品研发系统沟通问题!

优秀

低代码

业务架构模块7 作业 王者荣耀商城异地多活

好吃不贵

业务架构

“Windows 找不到文件...”,怎么处理?

Emotion

windows 系统 找不到系统文件 windows找不到文件

Linux之tail命令

入门小站

Linux

08 | 指针系列(二):记住,指针变量也是变量

Nydia

Rust从0到1-Cargo-自定义构建

rust build cargo 构建

又曝出程序员删库跑路,业界何时能推出互联网企业和程序员之间的约束准则?|话题

三掌柜

话题讨论 话题 话题王者 话题广场

5分钟速读之Rust权威指南(三十四)面向对象

wzx

rust

话题讨论|你知道集群、分布式、微服务区别吗?

Emotion

分布式 微服务 话题讨论 集群 话题王者

Redisson 分布式锁源码 01:可重入锁加锁

程序员小航

Java redis 源码 分布式锁 redisson

为什么 FaaS 系统的复杂性不会随着规模的增长而指数增长?

朱峰 Ben

Serverless Faas

PowerShell 数组

耳东@Erdong

PowerShell 7月日更

.NET CORE 对象池简述

喵叔

7月日更

ES6中扩展运算符的8种用法

devpoint

数组去重 ES6 扩展运算符

云原生领域的一些技术展望

名白

容器 云原生 Service Mesh service

Java入门到架构-优秀书籍

Java入门到架构

Java 架构 入门 书籍

🏆 【JVM性能调优】「对象内存分配」虚拟机参数调优分析

码界西柚

GC jvm调优 内存分配 7月日更

极客时间-排位赛可视化工具

IT蜗壳-Tango

7月日更

CodeDay#7 启动 | 北京欢迎你

蚂蚁集团移动开发平台 mPaaS

小程序 webview 移动开发 mPaaS

推荐系统提供web服务的2种方式(二十四)

Databri_AI

算法 推荐系统 web服务

2021最新一线大厂Java高级架构师面试题总结,上线3天获22w浏览量

Java 编程 程序员 架构 面试

网络攻防学习笔记 Day61

穿过生命散发芬芳

网络攻防 7月日更

(VMware)ubuntu 环境下搭建 docker 镜像私服

逸少

Docker 镜像仓库

【LeetCode】雪糕的最大数量Java题解

Albert

算法 LeetCode 7月日更

【Flutter 专题】98 易忽略的【小而巧】的技术点汇总 (六)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

架构思考

zk

微信 架构 微信业务架构

流量为王时代的短视频平台如何确保内容质量?|【话题讨论】

老猿Python

技术 内容审核 流量为王 负能量

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