2010-06-27 86 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