iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Software Development

從Rookie到Junior,一個後端成長的30堂課系列 第 2

Day 1:後端生態系與分層架構思維

  • 分享至 

  • xImage
  •  

後端常見的語言有非常多,包含常見的C#、.NET、Java、Python、Go…等,雖然程式語言眾多,但萬法不離其宗,背後的架構思維與解決問題的能力才是工程師的核心價值

關於系列文章採用語言
如果內容包含程式舉例,本文會採用Laravel作為範例語言。

關於PHP
PHP語言本身的底層是透過C語言來進行撰寫的。本身PHP的核心:Zend引擎是完全用 C 語言實現的,它負責將 PHP 程式碼編譯成可執行的中間碼,並處理底層的數據結構和記憶體管理。

常見開發架構
MVC架構
MVC,分別對應到:Model、view、controller。
Model 是與資料庫溝通的媒介。View是畫面(Laravel 的命名是 blade)、Controller是控制器(用於調用Model)

在傳統的三層式架構中,就這三個就可以組成一個畫面,但隨著軟體不斷發展,越來越多複雜的邏輯、高複用性的要求、解耦、避免過度肥大...等,三層式架構早已不敷使用,在傳統MVC中,業務邏輯往往被塞進 Controller。但隨著專案變大,Controller 會變得異常肥大且難以維護。這時,我們需要更細緻的分工。
https://ithelp.ithome.com.tw/upload/images/20260818/201457031ebunQ2nII.png

我們在 Controller 與 Model 之間,加入了 Service 與 Repository:

Repository Pattern (資料庫存取層):

職責: 專注於 DB 查詢邏輯的封裝。

Junior 該懂的觀念: 它的作用是把複雜的 SQL 或 ORM 操作(如 Join, Where 條件組合, Scope)包裝成語意化的方法(例如 findActiveUsers())。

對 Service 來說,Repository 只是負責「執行資料庫查詢」的工具,不涉及其他外部 IO 或邏輯判斷。

Service Layer (業務邏輯層):

職責: 專注於 業務流程的調度 。

Junior 該懂的觀念: 它是系統的「大腦」。

決定行為: 判斷現在要先讀 Redis 快取?還是要透過 Repository 去查資料庫?或者是 Call 外部 API?

流程控制: 例如「先去 API 拿匯率,再去 Repository 撈商品價格,最後計算出台幣金額」。這串邏輯是 Service 負責串接的。

他山之石:Django 的 MTV
為了避免陷入單一語言的思維,我們來看看 Python 的 Django。MTV,分別對應到:Model、template、view。我會選擇Django為這個架構的代表框架。

跟上面MVC比較不一樣的是:MTV-View代表的是業務邏輯,而MTV-Template代表的是畫面UI。

名詞不重要,職責分離(Separation of Concerns)才是重點。


上一篇
DAY01 - 這堂課要做什麼?
系列文
從Rookie到Junior,一個後端成長的30堂課2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言