iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0

前言

本篇文章會介紹怎麼使用三層式架構架設我們的後端系統,這篇會偏向文字敘述,會先介紹本次後端的做法,下篇文章才會進到完整程式碼跟測試的部分。

三層式架構

三層式架構(Three-tier Architecture)是一種常見的資料庫應用程式設計模式,它將應用程式分為三個邏輯層次。這種架構提高了應用程式的可維護性、擴展性和靈活性。

表現層(Presentation Layer):

負責與用戶直接互動
例如:網頁介面

業務邏輯層(Business Logic Layer):

處理來自表現層的請求,實現業務邏輯和數據處理

資料訪問層(Data Access Layer):

執行數據的讀取、寫入、更新和刪除操作
通常包含資料庫連接和查詢邏輯

大致上就像這樣
image

我個人會以前端常用的 MVP 架構去理解
一般在撰寫後端的三層式架構時會區分為:

  1. Controller
  2. Service
  3. Repository

Controller,即表現層,也等於 MVP 中的 V,就是使用者會碰到的最外面的那一層,在這裡我們通常會撰寫 API 服務,使用者就是透過 Controller 所寫的 API 來當作路徑訪問資料庫。

Service,即邏輯層,也等於 MVP 中的 P,就是負責執行邏輯判斷的地方,通常 Controller 寫完 API 後,內部要回傳資料時的資料就是透過 Service 進行資料處理、邏輯判斷,最後將整理好的資料丟回給 Controller 顯示,就跟 MVP 中 P 所負責的工作一樣。

Repository,即資料訪問層,也等於 MVP 中的 M,就是負責跟資料庫對接的部分,當 Service 需要某些資料庫的資料時,就會透過 Repository 跟資料庫拿取資料,這部分跟 MVP 中的 P 如果需要資料就會跟 M 拿一樣。

建立項目

  1. Entity
  2. Controller
  3. Service
  4. Repository
  5. Request
  6. Response

這篇文章會先大概介紹這 7 項各自負責的工作,以及一些會使用到的設計方式
最後完整建立的項目大概項這樣
image

Entity

在建立三層式架構前,我們要先來建立資料表,想做什麼功能可以自由設定,這次教學會做一個註冊帳號,拿到驗證碼,再拿驗證碼驗證帳號的功能。

首先新增一個 class,並且命名,這部分建立的方式也包含了 Controller、Service。
image

image

Controller

如同上方三層式架構講到的,這裡會負責我們的 API 路徑設定的工作,並且會呼叫 Service 來完成資料判斷,最後回傳資料給使用者看。

Service

這裡會執行資料判斷跟邏輯處理的工作,將資料整理完畢,判斷好要回傳的內容再丟給 Controller 做顯示。

Repository

這裡會撰寫一些查詢資料或變更資料的 SQL,當 Service 需要用到資料庫中的資料時,就會透過 Repository 的查詢方法來跟資料庫溝通。

這裡建立時會比較不一樣,我們要選取 interface ,因為 Repository 是一個接口,負責跟資料庫對接而已。
image

Request、Response

這個部分其實要看 Controller 想要怎麼設計,一般來說要從前端像後端發送資料,就可以根據發送過來的資料做不同的功能,像是註冊功能可能就需要「name、email、password...」,因此根據傳送過來的資料,就可以做到不同功能。

建立 Request 跟 Response 時有分兩種方式,一個是用 Class,另一個就是用 Record,兩者使用上其實差不多,不過 Record 會比較簡潔一點,Record 本身可以做到像 @Builder 在做的工作,直接為項目設值,不用透過 Setter,因此程式碼會相對 Class 比較簡潔。
image

總結

完成以上大概架構的建立後,接下來就是要將裡面的內容給補上,測試的部分會使用 postman 做測試。


上一篇
[DAY 06] 提升開發 Spring 速度的工具 Lombok
下一篇
[DAY 08] 建立第一個簡單的後端系統 2
系列文
智慧語義互動平台:基於Spring和Semantic Kernel的Android應用創新30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言