写点什么

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

评论

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

上手后才知道,这套仪表盘系统用起来是真的爽!

尔达Erda

开源 微服务 运维 APM msp

模块8 作业

Chris Cheng

架构训练营

那些必须要掌握的Hive数据倾斜与调优手段

云祁

7月日更

Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客

梦想橡皮擦

7月日更

关于数据库时区,这么多奥秘你都知道么?

华为云开发者联盟

数据库 操作系统 时间 时区 GaussDB(DWS)

anyRTC 6月SDK更新迭代

anyRTC开发者

音视频 WebRTC 实时通讯sdk

红色100系统软件开发资料

自建开发工具系列-Webkit内存动量监控UI(六)

Tim

发布 迭代 publish 长期演进

我发现了Chrome的一个bug

wzx

JavaScript chrome

降低网络拥塞,追求美好体验——对话拍乐云首席科学家章琦

拍乐云Pano

Flink + Iceberg + 对象存储,构建数据湖方案

Apache Flink

flink

RUOYI 框架教程 14| 什么!详情页还有简易写法?这么多年白学了(附代码)

Java_若依框架教程

Java 大前端 Ruoyi 框架 若依

FSC球星链APP系统开发介绍

RAID-0-1-5-10 搭建及使用-删除 RAID 及注意事项

学神来啦

云计算 Linux linux运维 raid

IPFS最新消息是什么?IPFS官网最新资讯是什么?

IPFS

Pytest常用插件

行者AI

pytest

一文带你 GNN 从入门到起飞,做一个饭盆最稳 GNN 饭人!

华为云开发者联盟

神经网络 modelarts 图神经网络 图卷积神经网络 GNN

RUOYI 框架教程 13| 若依RuoYi +Echarts+MySql 存储过程,实现图表可视化

Java_若依框架教程

Java Ruoyi 框架 若依 存储过程

从零开始学习3D可视化之摄像机“最佳看点”

ThingJS数字孪生引擎

大前端 可视化 3D 数字孪生

架构师之于团队的作用和其能力体现是什么?

happlyfox

话题讨论

架构实战营 模块八作业

冬天的树

字节跳动技术总监自爆:万字Android技术类校招面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

盲盒商城系统APP开发搭建

薇電13242772558

商城项目

Selenium4前线快报

FunTester

软件测试 自动化测试 测试开发 selenium

IPFS一台矿机的成本多少钱?IPFS矿机收益如何?

G1 Concurrent Refinement Thread 在干啥?

BUG侦探

G1 JVM refinement

以太矿场/以太矿机系统软件开发内容

5G消息盛事来袭|2021中国移动创客马拉松大赛5G消息专题赛即将启动!

5G消息

开发者 创客开发 开发者大赛 5G消息

字节跳动面试:来自阿里巴巴佛系安卓程序员的指南

欢喜学安卓

android 程序员 面试 移动开发

字节跳动技术总监自爆:看完你还觉得算法不重要

欢喜学安卓

android 程序员 面试 移动开发

字节跳动技术总监自爆:大牛带你直击优秀开源框架灵魂

欢喜学安卓

android 程序员 面试 移动开发

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