LINE 點餐系統重構之路:從 Razor Pages 到 Next.js 的全面進化
前言
2022 年 12 月開發的 Line 點餐系統,當時的技術架構為:
- Server:.NET 6 + Razor Pages + SQL Server
- Client:Bootstrap 5 + Vue.js
- Admin:Vite + Vue 3 (純前端)
直到 2025 年,該系統僅供特定的 2~3 家店家使用,且未對外開放其他店家使用。
近期因閒暇時間較多,加上 AI 開發工具崛起,決定對系統進行大改重構,完善功能,目標是將系統對外開放運營,並提供引導式設定讓店家可以在後台快速上手。
重構重點
準備在原有的基礎上,優化底層架構並增加店家後台功能。
技術換血
預計汰除原有的 Razor Pages + Vue.js,改用全現代化前端架構:- Framework: Next.js
- Language: TypeScript
- Style: Tailwind CSS
功能升級
- 全面支援 RWD 響應式設計
- 優化店家 SEO
- 新增「自取外帶」與「店內用餐」模式
- 使用者上傳菜單照片,透過AI解析匯入系統
- 一鍵發布圖文選單到Line官方帳號
- 出單機串接提示
- 購物車狀態同步優化 (解決跨裝置/跨瀏覽器問題)
- 多分店支援
- 優化 LINE Login 轉導體驗 (消除轉跳白屏、加速載入)
- 金流設定 & 金流報表優化
- 出單機設定 & 出單機報表優化
後端重構
- 升級目標:.NET 6 -> .NET 10 (預計採用最新版以獲得最佳效能)
- 架構優化:將原本 Service 層與 DB 查詢混雜的邏輯抽離,導入 Repository Pattern 或依照 Clean Architecture 原則重新分層。
- API 效能:針對高併發的點餐場景進行優化 (e.g., Redis Cache, Async/Await 徹底落實)。
- 資料庫:SQL Server 索引優化與正規化調整。
系統架構對比 (System Architecture)
為了讓未來維護更輕鬆,這次重構在架構上做了很大的調整,從原本的單體式混合架構,轉向職責分明的多層式架構。
🚫 改版前:耦合過重 (Legacy)
舊版架構中,Razor Pages 負責了大部分的邏輯,而 Service 層常常直接參照 DB Context,導致邏輯與資料存取緊密耦合,難以測試。
1 | graph TD |
✅ 改版後:職責分離 (Refactored)
新版架構引入了 Repository Pattern 與 BFF (Backend for Frontend) 的概念。
- Next.js 作為 BFF,處理前端路由與輕量級邏輯。
- API Layer 專注於提供資料,不處理 UI 邏輯。
- Service Layer 只負責商業邏輯驗證。
- Repository Layer 專心處理資料庫連線與查詢。
1 | graph TD |
結語
這次重構的目標很明確:讓系統更好維護、更容易擴展、提供店家引導式設定、也更有機會對外運營。
後續會針對各個優化項目(如 AI 辨識菜單、購物車優化等)單獨撰寫文章!
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 馬克的技術旅程!



