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

简介: Ktor 是一个用于创建异步客户端和服务器应用程序的Kotlin框架。经过 1 年多的开发,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 创建一个简单的服务器非常简单,如下所示:

image.png

上述代码会在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 上发布的这篇教程。

作者简介:

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

目录
相关文章
|
3月前
|
开发者 Kotlin
揭秘Kotlin协程:如何在异步风暴中稳握错误处理之舵?
【9月更文挑战第12天】本文深入探讨了Kotlin协程框架下的错误处理机制,通过实例分析展示了如何利用`CoroutineExceptionHandler`进行结构化异常处理。文章详细介绍了全局与局部异常处理器的使用方法,并展示了如何在挂起函数中使用`try`表达式优雅地处理异常,以提高程序的健壮性和可维护性。
41 4
|
3月前
|
设计模式 开发者 UED
深入理解Kotlin中的异步网络请求处理
深入理解Kotlin中的异步网络请求处理
|
4月前
|
编译器 Android开发 开发者
Android经典实战之Kotlin 2.0 迁移指南:全方位优化与新特性解析
本文首发于公众号“AntDream”。Kotlin 2.0 已经到来,带来了 K2 编译器、多平台项目支持、智能转换等重大改进。本文提供全面迁移指南,涵盖编译器升级、多平台配置、Jetpack Compose 整合、性能优化等多个方面,帮助开发者顺利过渡到 Kotlin 2.0,开启高效开发新时代。
191 0
|
6月前
|
JavaScript Java Android开发
kotlin安卓在Jetpack Compose 框架下跨组件通讯EventBus
**EventBus** 是一个Android事件总线库,简化组件间通信。要使用它,首先在Gradle中添加依赖`implementation 'org.greenrobot:eventbus:3.3.1'`。然后,可选地定义事件类如`MessageEvent`。在活动或Fragment的`onCreate`中注册订阅者,在`onDestroy`中反注册。通过`@Subscribe`注解方法处理事件,如`onMessageEvent`。发送事件使用`EventBus.getDefault().post()`。
|
6月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
6月前
|
缓存 Android开发 Kotlin
【安卓app开发】kotlin Jetpack Compose框架 | 先用OKhttp下载远程音频文件再使用ExoPlayer播放
使用 Kotlin 的 Jetpack Compose 开发安卓应用时,可以结合 OkHttp 下载远程音频文件和 ExoPlayer 进行播放。在 `build.gradle` 添加相关依赖后,示例代码展示了如何下载音频并用 ExoPlayer 播放。代码包括添加依赖、下载文件、播放文件及简单的 Compose UI。注意,示例未包含完整错误处理和资源释放,实际应用需补充这些内容。
|
6月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
5月前
|
Dart Swift iOS开发
用pigeon kotlin swift写一个自己的插件
用pigeon kotlin swift写一个自己的插件
|
7月前
|
安全 Java 编译器
Kotlin 1.6 正式发布,带来哪些新特性?
Kotlin 1.6 正式发布,带来哪些新特性?
52 0
|
IDE Java 开发工具
Kotlin 1.8.0 现已发布,有那些新特性?
Kotlin 1.8.0 现已发布,有那些新特性?
205 0
Kotlin 1.8.0 现已发布,有那些新特性?
下一篇
DataWorks