2010-06-27 56 views
1

我計劃設計一個易於定製和維護且不影響效率的項目(n層)......這裏是我的(獨特的)設計佈局草案基礎上,我就如何建立ntierarchitecture了...設計多層應用程序(模板樣式)

該項目由3倍的DLL(+1助手類)和UI

  1. BusinessRules.dll(2個ValueObjects撰寫(DTO)和BusinessObjects)

  2. 應用程序DomainRules.dll(我把這裏的領域驅動類,如註冊,許可銷售服務類,將使用Business Objects和VOS)

  3. DataAccessLayer.dll 這裏是代碼:

//在BusinessRules.DLL,子文件夾的ValueObject

public class Person 
    { 
     // getters and setters 
     public string ID { get; set; } 
     public string Name { get; set; } 
    } 

    // in BusinessRules.DLL, sub folder Business Objects 
    public class PersonBLL 
    { 
     public void AddNewPerson(Person Person) 
     { 
      new PersonDAL().SaveNewPerson(Person); 
     } 
     //side-question: 
     //should I inherit the Person VO and do it like this 
     //public void AddNewPerson() 
     //{ 
     // new PersonDAL().SaveNewPerson(this); 
     //} 
     // which is more efficient??? 
    } 

    // in DataAccessLayer.DLL 
    public class PersonDAL 
    { 
     public void SaveNewPerson(Person Person) 
     { 
      // Save to DB 
     } 
    } 

    // in AppDomainRules.DLL, base class 
    public abstract class RegistrationTemplate 
    { 
     public virtual void RegisterNewPerson(Person m) 
     { 
      new PersonBLL().AddNewPerson(m); 
     } 
    } 

    //Client 1 registration domain logic 
    public class RegistrationForClient1 : RegistrationTemplate 
    { 
      // will use the template 
    } 

    // Client 2 registration domain logic 
    public class RegistrationForClient2 : RegistrationTemplate 
    { 
     // overrides the template 
     public override void RegisterNewPerson(Person m) 
     { 
      // change the behavior of PersonBLL.AddNewPerson 
      // different implementation 
     } 
    } 

    // UI Implementation for Client1 
    static void Main(string[] args) 
    { 
     Person m = new Person() 
     { 
      ID = "1", 
      Name = "John Mortred" 
     }; 
     new RegistrationForClient1().RegisterNewPerson(m); 
    } 

我的首要任務/目標是: 1.效率 2.可維護性/定製/可靠/可擴展性 3. RAD(系統快速開發)

我的問題: 您的意見, 1.設計是否有缺陷?代碼效率如何?性能? 2.我是否違反了OOP archi或分層設計的一些規則? 3.這種設計鬆散/低耦合? 4.我可以使用它來實現我的目標嗎? 5.建議?

在此先感謝:)

回答

0

我勸搞清楚你的​​程序需要做什麼,這限制到特定的設計之前。

這對於一個允許您存儲和讀取用戶的簡單獨立應用程序而言可能沒有任何缺陷,對於需要具有脫機/聯機功能的多用戶系統來說,這可能不是一個好設計。

除非你正在製作一個「有趣」的項目,否則在構建它之前,總要弄清楚你需要做什麼。

+0

KISS和YAGNI - 學習+愛=易於維護的代碼。 – 2010-06-27 05:54:12

+0

好吧,我們有一個系統(忠誠卡系統),我們有很多客戶使用該系統,但他們有不同的實現,比如說,定製。現在,項目設置是,每個客戶都有自己獨立的VS項目解決方案,我說過,所有的客戶都會定製它,像添加一些功能,所以我們決定分開項目。問題在於,隨着許多客戶訂閱我們,維護變得越來越難,每次新客戶訂閱時,我們都必須創建另一個項目,我的解決方案就是將所有項目合併爲一個,然後在設計中完成這項工作。 – csharpnoob 2010-06-27 06:05:06

+0

關注複合應用程序(不是CompositeUI Block),我認爲這更符合您所尋找的內容。 – 2010-06-27 06:11:40