NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

作者:Andrea Messetti

  • 2022-05-18
  • 本文字数:1094 字

    阅读完需:约 4 分钟

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

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进行指标监测,用JWTOAuth进行授权。它还支持各种模板引擎,如MustacheThymeleafVelocity

 

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

 

要进一步了解如何使用 Ktor 创建基于微服务的应用,可以阅读 JetBrains 开发宣传副总裁Hadi Hariri在 InfoQ 上发布的这篇教程


作者简介:

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


原文链接:

Kotlin Asynchronous Framework, Ktor 2.0, Released with New Plugins Feature

2022-05-18 08:004700

评论

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

第七个模块作业

achilles

基于Apache组件,分析对象池原理

Apache redis 构架 池化思想 对象池

这样的 Python ,你学得会吗

海拥(haiyong.site)

Python 4月月更

项目经理值得一试的思维方式:项目成功方程式

禅道项目管理

项目管理 软件开发

“逆行者”蒙牛 穿越疫情“暴风眼”

科技新消息

智能时代,应该如何培养中小学AI教师?

脑极体

王者荣耀商城异地多活架构设计

石小天

「架构实战营」

我要批判架构师!

博文视点Broadview

FlyFish模版中心正式上线!快来领取社区周边礼物

云智慧AIOps社区

开源 大前端 数据可视化 大屏可视化

vivo 短视频推荐去重服务的设计实践

vivo互联网技术

服务器 架构设计 布隆过滤器

Linux之ssh-copy-id命令

入门小站

Linux

谈谈高并发系统的一些解决方案

xiaoxi666

高并发 高并发系统设计 高并发系统

普渡科技联合韩国VD Company参展IFS创业博览会,引爆韩国服务机器人市场

江湖老铁

web前端培训-程序员失业后怎样才能再就业

@零度

web前端开发

MySQL性能优化的5个维度

蝉沐风

MySQL 性能优化

蒙牛“申”请出战 全力守“沪”战疫

科技新消息

OpenHarmony 3.1 Beta版本关键特性解析——ArkUI开发框架canvas组件绘制实践

OpenHarmony开发者

canvas OpenHarmony ArKUI 3.0

一文读懂 MySQL Explain 执行计划

老周聊架构

MySQL 数据库 3月月更 4月月更

【Go实现】实践GoF的23种设计模式:单例模式

元闰子

Go 设计模式 单例模式

报名中2022南京智博会 第十四届南京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

MySQL 是怎样通讯的?

ooooooh灰灰

Go MySQL 协议 4月月更

守“沪”第一线 蒙牛使命必达

科技新消息

在线XML转HTML工具

入门小站

工具

【课程汇总】OpenHarmony成长计划知识赋能第二期系列课程(附链接)

OpenHarmony开发者

OpenHarmony 成长计划

在线OPML美化格式化工具

入门小站

工具

中小企业知识管理的实施策略

小炮

企业知识管理

大数据培训-程序员职业生命周期短的原因

@零度

大数据开发

Linux驱动开发-编写DS18B20驱动

DS小龙哥

4月月更

围观报名中2022第十四届南京国际人工智能产品展会

InfoQ_caf7dbb9aa8a

JDK、Spring、Dubbo SPI 原理介绍

网易云信

Java spring

java培训-程序员怎样靠技术来延长职业周期

@零度

JAVA开发

Kotlin异步框架Ktor 2.0发布,提供新的插件特性_大前端_InfoQ精选文章