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

EES 框架 BLL 層程式碼組織與設計解析

     編輯:關於.NET

BLL 層定位

BLL (Business Logic Layer) 處於承上啟下關鍵位置:

  • 承上:與資料庫互動,扮演 DAL 役割。
  • 啟下:對 BP/Stub/Client 端提供服務層介面。

基類設計:BLService<T>

BLService<T> 提供基本增刪改查,預設服務不公開,需於衍生類別公開。關鍵屬性:

  • [Operation(ScopeOption.Disabled)]:查詢方法通常停用交易範圍。
  • [Operation(ScopeOption.Required)]:異動方法啟用交易。
  • [Action("名稱", "描述")]:動作標註,供 Controller 代碼生成使用。

程式碼結構範例

public class UserImp<T> : BLService<T> where T : EESObject, new()
{
    [Operation(ScopeOption.Disabled)]
    public virtual T FindById(String code) { return base.FindId(code); }

    [Operation(ScopeOption.Disabled)]
    public virtual DataCollection<T> FindByName(string name)
    {
        Where clause = new Where();
        clause.Add("Name", name);
        return base.Find(clause);
    }

    [Action("保存", "保存")]
    [Operation(ScopeOption.Required)]
    public override T Save(T t) { return base.Save(t); }
}

// 具體服務類別
[EESBO("User")]
public class UserService : UserImp<User>
{
    [Operation(ScopeOption.Required)]
    public virtual EESContext Login(string userId, string salt) { /* ... */ }

    [Operation(ScopeOption.Required)]
    [Action("密碼重設")]
    public virtual User ResetPwd(User user) { /* ... */ }
}

關鍵設計說明

  • 分層生成:UserImp 為自動生成基類,UserService 為手寫業務邏輯類,分離關注點。
  • EESBO 屬性:標記服務類,代理/服務設定生成時自動產生配置與 Proxy。
  • 查詢靈活性:支援 Where 物件建構條件,伺服器端可用 WhereEx 處理複雜字串拼接。
  • 虛擬方法:公開類別方法必須 virtual,以便 Proxy 攔截。
  • 呼叫方式:伺服器端用 Factory.New<UserService>(),客戶端用 ProxyFactory.GetProxy<UserService>()。

範例呼叫程式碼

main()
{
    EES.Common.Config.Configuration.Root = "...";
    User user = Factory.New<User>();
    user.Code = "123456";
    UserService srv = Factory.New<UserService>();
    srv.Save(user);
}

遠端呼叫擴充

服務端 UserService 完全不需修改,僅需部署至 IIS 並加入設定檔,即可透過 HTTP 進行遠端 RPC 呼叫。客戶端同樣無需改動程式碼,只需加入自動生成的 Proxy 類別並調整設定。

關於 LINQ 整合的考量

作者仍在評估是否引入 LINQ,歡迎社群建議。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved