聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

Kotlin 异步框架 Ktor 2.0 发布,提供新的插件特性

2022-05-24 10:50 浏览: 2539735 次 我要评论(0 条) 字号:

发表于

作者 | Andrea Messetti
译者 | 平川
策划 | 丁晓昀

Ktor 是一个用于创建异步客户端和服务器应用程序的 Kotlin 框架。经过 1 年多的开发,2.0 版本于近日发布,在带来新特性的同时,也带来了破坏性的变化。

在服务器端,Ktor 2.0 引入了名为“插件(Plugins)”的新特性(以前被称为“Features”),以提高框架的可扩展性。顾名思义,它允许我们实现插件架构,简化了功能扩展。

它还引入了 Kotlin/Native 支持,这是对 Ktor 1.6 中添加的 GraalVM 支持的补充。其他改进包括随机端口支持、经过改进的测试 API、类型安全的路由、XML 序列化和插件子路由(subroutes for plugins)。

在客户端,Ktor 2.0 带来了一个经过简化的 API,用于管理常见的 HTTP 请求;响应现在是HttpResponse类型,可以简单地使用 bodyAsText 访问响应体。

重试现在成为客户端的内置功能,允许指定两次重试之间的时间间隔。Ktor 2.0 还在客户端增加了一个内容协商特性,而在服务器端该特性之前就已经实现。

除了上述功能外,客户端还包括用于身份认证的快捷 API,如basic()bearer()辅助函数。

为了帮助开发者从以前的版本迁移到新的 2.0 版本,Ktor 团队提供了相关文档,并在 IntelliJ IDEA 中提供了一个迁移工具,其目的是修复所有与破坏性变化和重构包相关的问题。

使用 Ktor 创建一个简单的服务器非常简单,如下所示:

fun main(args: Array<String>) {    embeddedServer(Netty, 8080) {        routing {            get("/") {                call.respondText("Hello, world!", ContentType.Text.Html)            }        }    }.start(wait = true)}

上述代码会在localhost:8080上运行一个嵌入式 Web 服务器,安装一个路由插件,并在收到根路径上的 GET HTTP 请求时回复“Hello, world”。

Ktor 应用程序可以托管在任何支持 Servlet 3.0+ API 的 Servlet 容器中,如 Tomcat,或使用 Netty 或 Jetty 独立运行。Ktor 使用 Kotlin coroutines 以直观的命令式流程实现异步编程,而为了避免阻塞线程,上述所有服务器容器都使用异步 I/O 工具。

此外,Ktor 支持 Websocket 协议,用 Micrometer 进行指标监测,用 JWT 和 OAuth 进行授权。它还支持各种模板引擎,如 Mustache、Thymeleaf 和 Velocity。

Ktor 是 JetBrains 的官方产品,由 JetBrains 的团队和社区共同开发。

要进一步了解如何使用 Ktor 创建基于微服务的应用,可以阅读 JetBrains 开发宣传副总裁 Hadi Hariri 在 InfoQ 上发布的这篇教程。(https://www.infoq.com/articles/microservices-kotlin-ktor/)

作者简介:

Andrea Messetti 是 DXC Technology 的一名软件架构师,之前在惠普工作。目前,Andrea 专注于 Java 云原生应用程序和微服务。与计算机科学相关的东西(ML、区块链、边缘计算)他都喜欢研究。

原文链接:

https://www.infoq.com/news/2022/05/ktor-kotlin-framework/

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

十万亿条消息背后的故事

忍受不了糟糕的工作氛围,我退出了 Google WebAssembly 团队

Gitee关闭部分开源仓库:先审核再上线;技术团队20天开发出App后集体被裁,负责人怒用公司公号发文祝“早日倒闭” | Q资讯

独家专访字节跳动开源委员会:定位“资源中台”,不会为开源设立强KPI

点个在看少个 bug 



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复