第十三屆 佳作

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

系列文章

DAY 21

[Day 21] 使用 Coroutine SendChannel 處理非同步工作

系統除了即時接受及回應使用者請求,也需要執行各種非同步工作,例如背景排程及寄送訊息通知…等。在實作上,雖然我可以直接使用 CompletableFuture,...

DAY 22

[Day 22] 實作 Database Plugin 整合 Exposed ORM, HikariCP 及 Flyway

Java Web 框架通常都至少整合一種 ORM,只要 Gradle depenency 加一下,再到設定檔填入資料庫連線設定即可。但目前 Ktor 官方尚未整...

DAY 23

[Day 23] 自定義 ColumnType, Operator, Expression 擴展 Exposed Query DSL API

ORM 框架可以讓開發者專注於物件的 CRUD 操作,不必直接思考 SQL 要怎麼寫。如果是新增、修改、刪除操作的話,通常只要寫一行程式碼,呼叫 save()...

DAY 24

[Day 24] 自定義 REST QueryDSL 實現動態查詢資料庫

大多數系統的資料庫查詢操作比寫入多樣化且複雜,後端工程師要花比較多的心力撰寫查詢 API,以下列出常見的幾個問題 同一張資料表的查詢 API 會隨著 Clie...

DAY 25

[Day 25] 實作 Redis Plugin 整合 Redis Coroutine Client

目前 Redis 幾乎已成為後端微服務架構的必備基礎設施,但是 Ktor 官方連 ORM 都沒有整合了,Redis Client 當然也不會有啦,所以第一步就先...

DAY 26

[Day 26] 實作 Ktor Session Authentication with Redis

前面我們已經學會 Ktor Authentication 機制,而且也整合了 Database 及 Redis,今天我們把這些東西都串連起來,實作支援 Mult...

DAY 27

[Day 27] 實作 Redis PubSub Keyspace Notification 訂閱 Session Key Expired 事件通知

session authentication 的機制是 登入時建立 sessionId 儲存 session 資料至 Redis 驗證時使用 sessionI...

DAY 28

[Day 28] 實作 Multi-Channel Notifications

鐵人賽已逐漸進入尾聲,前面二十多天,我們一步步擴充加強 Ktor 功能,也整合了 ORM, Redis 許多框架函式庫,整個系統架構及基礎設施功能已逐漸成形。今...

DAY 29

[Day 29] 建立子專案來監控管理系統

前面的主題都專注於擴充加強 Ktor 及實作底層基礎設施功能,最後我們來看在 Multi-Project 架構下,要如何建立一個子專案。那麼要建立什麼子專案呢?...

DAY 30

[Day 30] Ktor Q&A 與 Side Project Roadmap

終於來到鐵人賽最後一天,本來想回顧總結我實作 side project 的過程,但想到讀者應該對於 Ktor 仍有許多疑問而正在猶豫是否要採用它,所以我列出之前...