首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 分布式架構實戰 (五) Framework 改進篇:業務邏輯類圖形化配置器

     編輯:關於.NET

前言:從手工編碼到模型驅動的跨越

系列前四篇奠定了 DAL、Repository、Query Object 等基礎設施。讀者反饋 (感謝 金色海洋、Virus) 指出:BLL 仍需大量手工編寫驗證、狀態追蹤、映射代碼,成為開發瓶頸。本篇提出核心改進:**業務邏輯類圖形化配置器**,以拖拉拽/屬性網格生成 C# 代碼,再以 partial class 分離手工擴充,實現「光速開發」。

配置器 UI 設計草圖 (三級聯動)

第 1 層:業務類整體設定

業務類配置主視窗 業務類整體設定草圖

  • 觸發點:方案總管右鍵業務類 → 「配置業務類」。
  • Properties:進入屬性配置細節。
  • DataProvider:AdoDotNetProvider / LinqProvider / EntityFrameworkProvider (對應前文 DAL 系列)。
  • MappingType:DataTable / DataEntity (LINQ/EF 實體),感謝兩位讀者建議加入 DataTable 選項。
  • MappingTypeName:對應實體名稱 (如 MS_Product),支援多實體組合映射。

第 2 層:單一屬性詳細配置

屬性配置草圖

  • Name:屬性名稱 (如 UnitPrice)。
  • MappingTo:對應資料實體屬性 (如 MS_Product.Price)。
  • ValidationRules:掛載驗證規則 (必填、範圍、正則、自定義)。

第 3 層:驗證規則編輯器

驗證規則配置草圖

  • 類似 Enterprise Library Validation 組件的圖形化規則編輯器。
  • 支援:NotNull、Range、Regex、CustomDelegate 等規則類型。
  • 規則參數化 (如 Range(0, 99999)) 並序列化至配置。

代碼生成策略:Partial Class 分離關注點


// 自動生成檔:Product.Generated.cs (不可手改)
public partial class Product : BusinessBase
{
    private decimal _unitPrice;
    [DataMapping("MS_Product.Price")]
    [Validation(typeof(NotNullValidator))]
    [Validation(typeof(RangeValidator), 0, 99999)]
    public decimal UnitPrice
    {
        get => _unitPrice;
        set => SetProperty(ref _unitPrice, value, "UnitPrice");
    }
    // ... 其他屬性、DataProvider 初始化、Mapping 註冊
}

// 手工擴充檔:Product.cs (開發者維護)
public partial class Product
{
    public decimal CalculateDiscountedPrice(decimal discountRate)
    {
        // 核心業務邏輯,生成器無法覆蓋
        return UnitPrice * (1 - discountRate);
    }
}
  • 生成器負責:屬性定義、映射屬性、驗證屬性、INotifyPropertyChanged 樣板代碼。
  • 開發者專注:領域行為方法、複雜不變量檢查、跨實體協調。
  • 重新生成時**僅覆蓋 .Generated.cs**,手工代碼完全保留。

技術實現要點

預期效益與後續規劃

  • ✅ BLL 代碼生成效率提升 **80% 以上** (屬性/驗證/映射樣板)。
  • ✅ 團隊規範統一:命名慣例、驗證規則、映射風格強制一致。
  • 🔜 後續整合:服務契約自動生成 (從 BLL 產出 WCF/Web API DTO)、單元測試骨架生成 (依驗證規則自動生成邊界測試用例)。
  • 🔜 原始碼將隨系列完結後開源 (MIT License),敬請期待!

結語

「工欲善其事,必先利其器。」將架構師經驗固化為圖形化配置器,讓開發者從繁瑣樣板代碼中解脫,專注核心業務價值創造。這正是 Framework 進化的終極意義。歡迎繼續關注系列最終篇!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模組關鍵技術
配置器宿主VS Package / VSIX 擴充套件,整合方案總管右鍵菜單
UI 框架WPF PropertyGrid + 自定義屬性編輯器 (驗證規則集合編輯器)
模板引擎T4 (Text Template Transformation Toolkit) 預處理模板
配置持久化專案目錄 .bllconfig XML,納入版控
映射執行器運行期反射讀取 [DataMapping] 屬性,配合 Provider 實現雙向映射