Ktor 2.0

Par:
fredericmazue

mar, 12/04/2022 - 15:05

Ktor est un framework Kotlin pour la construction de serveurs et de clients asynchrones dans des systèmes connectés. Il est créé par l’équipe de Kotlin chez JetBrains et, en tant que tel, il tire pleinement parti des possibilités de ce langage. Ktor vient de sortir en version 2.0, et, fort logiquement, il est compatible avec Kotlin 1.6.20, qui vient également de sortir.

Ktor 2.0 introduit de nombreuses nouvelles fonctionnalités, avec des changements de rupture. Cela nous a permis d'effectuer des travaux de maintenance et de nous débarrasser des décisions héritées, explique l'équipe de développement

Dans cette version 2.0, l'API d'extensibilité a été grandement simplifiée, ce qui facilite considérablement la création de plugins.

Par exemple ce code en 1.x :

companion object Feature : ApplicationFeature<ApplicationCallPipeline, CustomHeader.Configuration, CustomHeader> {
  override val key = AttributeKey<CustomHeader>("CustomPlugin")
  override fun install(pipeline: ApplicationCallPipeline, configure: Configuration.() -> Unit): CustomHeader {

    val configuration = Configuration().apply(configure)
    val feature = CustomHeader(configuration)
      pipeline.intercept(ApplicationCallPipeline.Call) {
         feature.intercept(this)
    }
  
    return feature
  }
}

devient en 2.0 :

val myCustomPlugin = createApplicationPlugin("CustomPlugin") {
  onCall {
  }
  onCallReceive {
  }
  onCallRespond {
  }
}

Côté serveur, Kotlin/Native est désormais pris en charge en plus de GraalVM (qui était déjà pris en charge à partir de la version 1.6), ce qui signifie que vous avez deux options en ce qui concerne les applications serveur autonomes. 

En raison des changements de rupture mentionnés plus haut, la migration vers Ktor 2.0 n'est pas immédiate. Notamment en raison de nouvelles conventions de nommage en ce qui concerne les modules et les packages.

JetBrains fournit une documentation de mappage pour aider les utilisateurs à migrer.