iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
Software Development

每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發系列 第 21

Day 21:Ktor 的特點:從 fun main 設計開始的輕量化

  • 分享至 

  • xImage
  •  

我們花了點時間講了怎麼使用 Ktor 3 建立專案與部署專案。也和其他的後端框架,包含了PHP、Python,還有其他 Java 世界的框架,像是 Spring Boot、quarkus 等進行比較。

今天我們來聊聊 Ktor 的設計邏輯是什麼,以及 Ktor 是怎麼實作這樣的邏輯,以及這樣的邏輯有哪些特點,適用哪些場景。

Ktor 的特點

回到官網「Why Ktor?」段落,我們可以看到 Ktor 的特點有

  • Kotlin and Coroutines
  • Lightweight and Flexible
  • Built and backed by JetBrains

可以看到,Ktor 並不以完整的功能作為賣點,而是以利用協程達成異步,輕量化和彈性作為賣點。

要達成輕量化的效果,Ktor 引入了一個設計邏輯,那就是「所有功能都是外掛」。

根據這個服務所需要的功能,我們引入對應的外掛。

這樣一來,雖然系統的開發會複雜一點點,我們就可以保證最後的功能都是系統所需要的功能。

要達成這個效果,我們可以看看專案是怎麼建立起來的

我們看到專案的 main()

fun main(args: Array<String>) {
    io.ktor.server.netty.EngineMain
        .main(args)
}

這邊純粹只是建立了 io.ktor.server.netty.EngineMain

所以剩下的功能,我們都要透過 extension function 的方式, 定義在 Application.module() 裡面

fun Application.module() {
    configureSerialization()
    configureDatabases()
    configureRouting()
}

這樣的寫法,利用了 Kotlin 語法的 extension function,在沒有作任何依賴注入框架的狀況下,還是能夠初步的將功能作區分。

和其他 Java based 的框架相比,由於 Java 語法的特性,要能夠作功能區分很常會選用依賴注入框架,加上 annotation class 的寫法。

這樣一來框架就必須要實作依賴注入的功能。

這部份也是 Ktor 可以比起許多 Java based 框架要更輕量的原因。

今天的部分就提到這邊,我們明天見!


上一篇
Day 20:Ktor 的文件和教學
下一篇
Day 22:Ktor 善用 trailing lambda 設計的前端生成框架
系列文
每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言