在企業內部使用的 ERP/CRM/HRM 系統開發中,採用 N-Tier 多層式架構 是常見且有效的方法,可達到清楚的職責分離、良好的模組化與系統延展性。本文介紹一套適用於這類型系統的五層式架構,並說明各層的角色與特色。
N-Tier 架構五大分層
| 分層名稱 |
英文名稱 |
說明 |
| 表現層 |
Presentation Layer |
提供使用者介面(UI),如 WinForm、Web UI、APP UI。 |
| API 呼叫層 |
API Connector Layer |
封裝 API 呼叫邏輯,支援序列化、加密、壓縮等處理,是用戶端的對外接口。 |
| API 服務層 |
API Service Layer |
提供統一的 API 接口給外部系統存取,支援授權驗證與參數處理。 |
| 業務邏輯層 |
Business Logic Layer (BLL) |
負責處理系統內部的業務邏輯與流程控制,核心元件為 BusinessObject。 |
| 資料存取層 |
Data Access Layer (DAL) |
存取資料庫的封裝層,透過 DbAccess 管理資料查詢與異動。 |
📌 架構流程圖:

各層詳細特色與實務應用
1. 表現層(Presentation Layer)
- 主要面向 企業內部使用者,使用者為具備流程知識的員工。
- UI 設計標準化、制式化,操作流程一致,降低學習門檻。
- 採用
FormLayout.xml 動態描述表單欄位與行為,支援 WinForm/Web/APP 三種前端自動化生成。
- 易於根據表單描述進行客製化調整,而不需變動程式碼。
2. API 呼叫層(API Connector Layer)
- 封裝用戶端與後端溝通的細節,使開發者專注於業務邏輯。
- 支援 近端與遠端呼叫切換:開發時使用近端 (方便除錯)、部署時使用遠端 (正式運行)。
- 傳遞資料提供序列化、加密與壓縮功能,提升通訊效能與安全性。
- 實現客戶端統一的 API 呼叫邏輯,減少重複開發。
3. API 服務層(API Service Layer)
- 提供通用、統一的對外 API 接口,是 後端系統的對外門面。
- 支援權限驗證、參數解析、例外處理等共通服務。
- 接收兩種資料格式:
-
JSON 格式:開放給第三方系統整合。
-
編碼格式(序列化/加密/壓縮):供內部前端使用,效能更佳。
- 開發新功能時,只需關注業務邏輯的實作,不必重複處理 API 基礎架構。
4. 業務邏輯層(Business Logic Layer, BLL)
- 系統的核心層,涵蓋所有企業內部運作邏輯,如:
- 每個功能對應一個
BusinessObject,統一處理資料與行為:
- 不論是 Web、APP 或 WinForm 前端,均連結至同一業務邏輯元件。
- 第三方 API 接口亦呼叫同一業務物件,確保邏輯一致性與維護便利性。
- 支援 業務邏輯客製化:
- 開發人員可繼承原始
BusinessObject,只覆寫需要調整的方法。
- 例如覆寫
DoBeforeSave 方法,自訂存檔前的驗證邏輯。
- 或覆寫
DoAfterSave 方法,調整存檔後的過帳或通知行為。
- 避免整段重寫,提高可維護性與擴充彈性。
5. 資料存取層(Data Access Layer, DAL)
- 封裝所有與資料庫互動的細節:
- 不直接暴露 Connection String,僅需指定
DatabaseID。
- 採用自研 ORM 架構 XORM:
- 管理資料表結構與 CRUD 產生。
- 利用
DbTable.xml 定義資料結構,支援跨資料庫類型(SQL Server、MySQL 等)。
- 表單定義透過
FormDefine.xml 管理欄位與行為設定。
- 各表單(如員工、部門)有獨立的定義。
- 表單之間的關聯性由定義檔決定,避免直接耦合資料表結構。
結語
透過上述 N-Tier 五層架構,企業系統可實現以下效益:
-
模組化維護:職責分離,各層邏輯清晰。
-
彈性延伸:新增功能僅需擴充對應層級,不影響整體架構。
-
統一開發模式:降低人員訓練成本與開發錯誤。
-
高可維護性與重用性:尤其在業務邏輯與 API 架構上效益顯著。
此種架構已成功應用於 ERP/HRM 系統中,證實其可擴充性與長期維運的可行性。
📘 HackMD 原文筆記:
👉 https://hackmd.io/@jeff377/enterprise-n-tier
📬 歡迎追蹤我的技術筆記與實戰經驗分享
👉 Facebook|天台上的架構師
👉 HackMD|架構開發筆記
👉 GitHub
👉 NuGet