域逻辑和业务逻辑

时间:2012-06-13 18:05:22

标签: repository-pattern n-tier-architecture

在我的一个项目中,我使用的是n层架构

DAL (Repository Pattern) <-> BLL (POCO Services) <-> Web UI (ASP.NET MVC)

我创建了一个通用存储库,DAL层上的一切都很好。

在商业逻辑层,我有我的服务方法,操作方式(我喜欢使用的例子,因为披萨:)

myOven.Bake(myPizza);

尽管如此,我需要一些对象内部的特定信息myPizza,如下所示:

myPizza.GetBakeTime();

我知道,我可以使用类似的东西:

myOven.GetBakeTimeFor(myPizza);

可以计算它,但我不想把那个特定的逻辑放到myOven对象(这里的服务层)中,相反,我想把它包含在myPizza中,就像< / p>

public partial class Pizza
{
    public double GetBakeTime()
    {
        // calculate Bake Time and return, based on other variables
    }
}

我的意思是,扩展我的ORM生成的类并提供此功能。

我的问题:我知道,这可以在理论上完成,但在将Domain LogicBusiness Logic同时用于同一类时,是否应该考虑这些因素?

1 个答案:

答案 0 :(得分:2)

域层应仅处理与业务相关的功能。存储库处理数据的持久性。这两者有不同的目的,不应混在一起。

Domain层也是业务层。对于此特定示例,您只需要烘焙时间,那么专门的查询存储库应该知道答案而不涉及域(因为它是预先计算的)。如果您想知道还有多少时间用于烘焙,那么服务(域的一部分)可以使用Oven和Pizza实体获取值。

但是,这已经过于具体,可能根本不适合您想要解决的实际问题。