第十三屆 佳作

web
基於 Kotlin Ktor 建構支援模組化開發的 Web 框架
林俊宏

系列文章

DAY 1

[Day 1] 微解封 微服務 那你有聽過微框架嗎? 又為何我選擇 Ktor?

自從微解封之後,現在「微XX」已經成為流行語,原來 Web 後端流行的「微服務」架構已經超前部署好幾年了(誤!)。相對於微服務熟為人知,「微框架」這個詞就沒這麼...

DAY 2

[Day 2] 從單體式遷移至微服務架構,支援模組化開發的 Web 框架可以解決什麼問題?

近年微服務架構興起,對於規模較小的開發團隊而言,一開始就拆分為多個微服務是個沉重的負擔,所以大多還是從單體式架構 monolithic 出發,往後再逐步拆分為微...

DAY 3

[Day 3] 以 Ktor Module 實作模組化開發

Ktor Module Ktor Module 可以用來組織程式碼,本身僅是一個 Application 類別的 extension function,讓 se...

DAY 4

[Day 4] 使用 Gradle Multi-Project Builds X Shadow Plugin X Docker Compose 建置、打包、部署

以往 Gradle 只能使用 Groovy 語言撰寫 Script,因為我對 Groovy 不熟,所以大多從 Google 尋找到解法後,再複製貼上稍作修改解決...

DAY 5

[Day 5] Ktor 微框架就如同一間毛胚屋,先來列出想要整合的框架及實作的功能清單

Ktor 的架構設計及開發風格是我所喜歡的,但相對地使用 Ktor 開發也要付出代價。因為 Ktor 以 unopinionated 的原則進行設計,所以很多功...

DAY 6

[Day 6] 使用 kotlinx.serialization 轉換 JSON

在 Java 的世界中,有很多種 json library 任君挑選,其中最多人使用的應該是 Jackson 及 Gson。我過往都是使用 Jackson,因為...

DAY 7

[Day 7] 實作 Request Data Validation 及 Global Exception Handler

昨天提到如何使用 kotlinx.serialization 處理 request/response json data,今天進一步延伸說明如何在 deseri...

DAY 8

[Day 8] 整合 Koin DI 實作 Ktor Plugin

Ktor Plugin & DSL Ktor 的架構設計是讓開發者透過實作 plugin,把 intercepting function 註冊到 req...

DAY 9

[Day 9] 使用 Config4k 以 Typesafe 及 Validatable 的方式讀取 Ktor 設定檔

Web 框架提供 API 讓開發者讀取設定檔是基本的必備功能,以 Spring 框架為例,從最早只支援 XML 格式,到現在可以使用 java-based co...

DAY 10

[Day 10] 實作 Ktor Graceful Shutdown

各種 Graceful Shutdown 的作法 一個穩定的服務必須要考慮當停止服務時,已經接受的 request 必須要處理完才行,否則輕則使用者會收到伺服器...