Ktor Roadmap

Ktor 2024 年路线图

Read this post in other languages:

2023 年2022 年一样,我们为未来一年的 Ktor 开发制定了路线图。 为了提高透明度和承担责任,我们将在这里与您分享我们的计划。

我们的当前计划

我们当前的 Ktor 计划和目标与前几年保持一致。 我们希望保持框架轻量、灵活和透明,让用户可以轻松创建强大且可维护的服务和客户端。

在每个新版本中,我们都会尽力提高所提供功能的质量和性能,同时扩展我们的 Ktor 插件生态系统。 这涉及引入新插件来简化现有用例(例如事务处理)以及添加对新用例(例如 Observability 和 gRPC)的支持。

在改进核心产品的同时,我们希望为用户提供更轻松的开发体验。 我们的目标是使插件生态系统更易操作,并为社区贡献消除阻碍。 我们还致力于提高我们提供的文档的范围、质量和多样性。

最后,我们希望利用 Kotlin Multiplatform (KMP) 的稳定不断发展的多平台库生态系统, 让 Ktor 开发者能够享受到 KMP 的优势并让他们更好地创建多平台应用程序。

新功能

我们计划在 2024 年提供以下新功能:

OpenTelemetry 插件

我们计划为 Ktor 客户端和服务器引入 OpenTelemetry 插件,使您能够生成遥测数据(指标、日志和跟踪记录)并将其公布以供收集。

基于 gRPC 的服务

我们已经在添加 gPRC 支持。 2024 年,我们将通过惯用的 Kotlin 实现将 gRPC 集成到 Ktor 客户端和服务器。 这将使创建和使用基于 gRPC 的服务像 HTTP 和 REST 一样自然和舒适。

在 Ktor 3.0.0 中迁移到 Kotlinx-io

Kotlinx-io 多平台库提供数据源和目标的抽象。 在 Ktor 3.0.0 最终版之前,我们计划用 Kotlinx-io 提供的网络类型替换现有定制网络类型。 这将使多平台库的创建者更轻松地支持 Ktor 客户端和服务器。 经过更新,现有 IO 功能将在 Ktor 3.0.0 中弃用,并在 Ktor 4.0.0 中移除。

添加对托管事务的支持

目前,Ktor 服务需要手动管理数据库事务,适合复杂场景。 但是,在许多情况下,最好在请求开始时启动事务并在结束时提交(前提是没有错误)。

2024 年,我们将推出实现此行为的官方插件。 这将简化数据库访问,同时为从 SQL 和应用程序特定的异常中恢复提供支持。

简化的依赖项注入

到目前为止,我们对依赖项注入 (DI) 库一直不设限制,更愿意允许用户按照自己的方式集成喜欢的产品。 然而,许多用户表示需要将 Koin 等框架集成到基于 Ktor 的服务中的明确建议。

为此,我们将于 2024 年正式在 Ktor 服务器中添加对 DI 的支持,并发布有关如何充分集成现有 DI 库的指南。

改进 Ktor 开发

除了向 Ktor 添加新功能外,我们还将进行一些更改,简化开发流程并扩展您的潜在选择:

改进的文档

基于过去一年收到的反馈,我们 2024 年的重点是提高当前内容质量并通过新材料扩大支持。 我们的主要目标是让学习之旅更加灵活直观 – 我们希望通过多次迭代实现:

  • 扩展、改进和简化 Ktor 服务器和 Ktor 客户端文档使用入门部分中的教程。
  • 解决云部署和配置主题。
  • 引入 Kotlin Multiplatform 全栈开发的综合指南。
  • 扩大我们文档中的 API 覆盖范围。

我们还计划进行结构性改革。 教程将无缝地相互补充,更有效地关联主题,并且服务器和客户端内容将被重新组织以确保更清晰的区别。

这些新增内容都将利用现代化的外观,并与其他 JetBrains 框架和库的文档集成。

插件注册表

目前,在线项目生成器仅提供 Ktor 团队创建的插件。 用户可以创建自己的插件并将其集成到服务中,但无法注册以供其他团队使用。 这阻碍了 Ktor 社区的发展。

为了解决这个问题,我们将引入接受第三方 Ktor 插件的机制。 

这将包括:

  • 用于创建 Ktor 插件的新的简化格式。 这种格式可用于包含在项目生成器中注册和显示插件所需的所有信息。
  • 新版本的项目生成器,附带对外部插件注册的支持。
  • 向 Ktor 团队提交拉取请求的程序,用于开始评估和注册第三方插件的流程。 

命令行工具

目前,我们建议使用在线项目生成器IntelliJ IDEA Ultimate 中的向导创建新的基于 Ktor 的项目。 虽然这两种方法可以涵盖大多数场景,但对基于命令行的替代方法的需求仍然存在。 这将允许用户在终端或 shell 中创建和修改项目。

为了满足这一需求,我们将在 2024 年发布适用于 Ktor 的 CLI 工具。

结论

我们希望这些计划足够有趣,并能够解决您在框架上可能遇到的突出问题。 感谢所有通过贡献、反馈、赞助和倡导帮助 Ktor 社区蓬勃发展的人士。 如果您想针对这些计划发表评论或建议其他功能,我们欢迎您加入 Kotlinlang Slack 的 Ktor 频道上的讨论(请求加入 Slack)。

本博文英文原作者:

Sue

Garth Gilmour

image description