Ktor 2.3 发布,Kotlin 编写的异步框架

944次阅读
没有评论

Ktor 是一个异步框架,用于创建微服务、Web 应用等。从头到尾都是用 Kotlin 编写的。

Ktor 2.3.0 近日正式发布,这次更新为 Ktor 生态带来了许多新功能和改进。以下部分简要介绍了该版本的主要变化:

核心改进

WebSockets ContentNegotiation 插件的显试类型

WebSocket ContentNegotiation 插件现在支持指定显式类型:

client.webSocket("ws://localhost:8080/echo") {
val originalData: Any = Data("hello")
sendSerialized(originalData, typeInfo<Data>())
val received = receiveDeserialized<Data>(typeInfo<Data>())

assertEquals(originalData, received)
}

Socket的结构化并发支持

来自 ktor-network 的 Socket 实现现在是一个 CoroutineScope。这意味着它支持 cancel() 操作来立即终止连接。

close()继续作为正常关闭工作,并将等待所有待定操作完成。

抛弃 JS 遗留配置

即将发布的 Kotlin 1.9.0 版本将删除遗留的 JS 编译器。从 Ktor 2.3.0 开始,传统的编译器不再被支持。请考虑迁移到新的 IR 编译器。

服务器

路由中的正则表达式支持

Ktor 现在允许在定义路由时使用正则表达式。使用正则表达式路由,你可以匹配一个复杂的路由,并轻松地捕获路由参数。


routing {
get(Regex("^(?<name>.+)$")) {
val name = call.parameters["name"]
call.respondText("Hello, $name!")
}
}

Static Content API 清理

Static Content API 已经被完善和精简,以获得更友好的用户体验。这次我们把重点放在最常见的情况上,并为它们做了一个简单的 API:

routing {
staticFiles("/static", File("files"))
}

将为 /static 路径下的 files目录中的所有文件提供服务。旧的 API 仍然可用,并将被支持。

而且我们也可以从资源中提供文件:

支持 CIO 的 100 Continue

CIO 引擎现在支持 100 Continue 状态。它开箱即用,不需要额外配置。

支持多个配置文件

通过允许使用多个文件,配置管理得到了简化。你可以使用 -config CLI 选项传递多个配置文件。配置文件将被依次加载和合并。

支持 Jetty 11 和 Tomcat 10

对于已经包含 Jetty 或 Tomcat 依赖关系的项目,Ktor 2.3.0 增加了对 Jetty 11 和 Tomcat 10 服务器实现的支持。它们是作为单独的依赖项交付的:

dependencies {
implementation("io.ktor:ktor-server-jetty-jakarta:2.3.0")
implementation("io.ktor:ktor-server-tomcat-jakarta:2.3.0")
implementation("io.ktor:ktor-server-servlet-jakarta:2.3.0")
}

更多详情可查看:https://blog.jetbrains.com/ktor/2023/04/18/ktor-2-3-0-released/

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy