典型三層架構中,應用服務層 (Business Logic Layer) 集中業務邏輯,是系統核心。但許多專案將資料庫操作、業務邏輯、甚至 UI 顯示混雜,導致耦合度高、難以維護。本文提出將應用服務層進一步垂直細分為四個子層,並橫向統一設計策略,構建高內聚、低耦合、可擴充的企業級應用架構。

現實實體對應為「實體類」(Entity Class)。核心挑戰:
主流方案對比:
| 方案 | 特點 |
|---|---|
| EJB Entity Bean (J2EE) | 重量級、遠端呼叫開銷大、常搭配 Value Object 模式優化效能 |
| JDO | 輕量級、透過增強器 (Enhancer) 處理持久化、XML 映射配置 |
| Websharp (EntityData) | 繼承 ADO.NET DataSet、XML 映射、單一資料表示形式 (EntityData)、犧牲編譯期型別檢查換取開發效率 |
封裝資料庫差異,提供統一存取介面。
IEntityDAO (Insert/Update/Delete/FindByPK)。AbstractSingleTableDAO、AbstractMultiTableDAO 封裝單/多表 CRUD,實作 IDisposable。PersistenceManager 針對單表映射物件自動存取。
操作實體物件而非直接操作資料庫。框架必須提供事務管理服務:
// Websharp 事務範例:入庫單處理
public void StoreIntoWarehouse(EntityData insertForm)
{
TransactionManager tm = new TransactionManager();
// 遍歷明細,更新產品庫存
foreach (DataRow row in insertForm.Tables["FormDetail"].Rows)
{
EntityData product = productDAO.FindByPrimaryKey(row["ProductID"]);
product["CurrentCount"] = (decimal)product["CurrentCount"] + (decimal)row["InCount"];
tm.AddMethod(new TransactionManagedFunction(productDAO.UpdateEntity), product);
}
tm.AddMethod(new TransactionManagedFunction(formDAO.InsertEntity), insertForm);
tm.ExecuteMethods(); // 原子提交
}
基於 Facade 模式,目的:
小型系統可省略業務邏輯層 (併入實體控制層) 或業務外觀層 (UI 直呼邏輯)。關鍵在於專案內統一策略,避免同一問題多種解法造成維護災難。
統一架構框架是公司知識資產的載體,凝聚經驗智慧,新人上手快,利於長期演進。Websharp 提供 VS.NET 整合代碼生成器,將規範落地為工具輔助。