在企業內部使用的 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
。
- 不直接暴露 Connection String,僅需指定
- 採用自研 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