熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

EES 框架 BLL層代碼組織與介紹

2013-11-13 10:37:20  來源: .NET編程 

  BLL層我個人感覺是與通用的NH/IB OR映射差異比較大的地方處於承上啟下的位置

  承上可以與數據庫打交道起到了DAL的作用

  啟下可以與BP層/Stub層/或客戶端直接打交道作為其服務層

  public class UserImp<T> : BLService<T>
    where T : EESObject new ()
{ 
        [Operation(ScopeOptionDisabled)]
        public virtual T FindById(String code)
        {
            return baseFindId(code);
        }
        [Operation(ScopeOptionDisabled)]
        public virtual DataCollection<T> FindByName(string name)
        {
            Where clause = new Where();
            clauseAdd("Name" name);
            return baseFind(clause);
        }
        
        [Action("保存" "保存")]
        [Operation(ScopeOptionRequired)]
        public override T Save(T t)
        {
            return baseSave(t);
        }
}

  BLService<T> 為業務層的基類主要提供增刪改查的功能默認狀態下基類的服務是不公開的需要在此類裡面公開

  Operation為事務自定義屬性通常在此處添加也可以在配置文件裡添加

  查詢也是此OR的一個特色對於客戶端和服務端的處理雷同但不相同服務器端可以使用 WhereEx 支持拼接字符串和其他等特殊處理在處理自定義查詢的時候非常方便

  Action自定義屬性為動作標注在生成Controller的時候會自動生成

  [EESBO("User")]
public class UserService : UserImp<User>
{    
    [Operation(ScopeOptionRequired)]
    public virtual EESContext Login(string userId string salt)
    {
         ……… 
    } 
    [Operation(ScopeOptionRequired)]
    [Action("密碼復位")]
    public virtual User ResetPwd(User user)   
  {
         ……… 
    } 
}

  UserService 為常用編碼的類UserImp主要為自動生成的類業務邏輯通常放在UserService類裡面

  EESBO自定義屬性標注此類為服務類在生成代理/服務配置的時候會自動生成配置文件和代理類

  其他的與UserImp類似

  一直在考慮是不是要把Linq加入進去沒有決定下來

  公開的類必須添加 virtual 使用的時候可以用ProxyFactorygetProxy<UserService>() 或FactoryNew<UserService>通常在服務器端用 FactoryNew<UserService>()方式在客戶端用 ProxyFactorygetProxy<UserService>() 方式調用

  示例代碼

  main()
        {
        EESCommonConfigConfigurationRoot = “……”;
        User user=FactoryNew<User>();
        userCode=””;
        
        UserService srv=FactoryNew<UserService>();
        srvSave(user);
        }

  此處沒有太多的處理加載的地方系統會自動處理配置文件的加載基於聲明式事務的處理對於多數據源和層次操作則會一層一層的處理

  如果需要通過http進行遠程調用服務器端的UserService不需要作任何的改變只需要加入到IIS裡面並添加些配置文件則可通過http 實現遠程RPC調用客戶端代碼不需要作改變也是更改一下添加一個自動生成的代理類則可


From:http://tw.wingwit.com/Article/program/net/201311/14144.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.