在我的一个项目中,我使用的是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 Logic
和Business Logic
同时用于同一类时,是否应该考虑这些因素?
答案 0 :(得分:2)
域层应仅处理与业务相关的功能。存储库处理数据的持久性。这两者有不同的目的,不应混在一起。
Domain层也是业务层。对于此特定示例,您只需要烘焙时间,那么专门的查询存储库应该知道答案而不涉及域(因为它是预先计算的)。如果您想知道还有多少时间用于烘焙,那么服务(域的一部分)可以使用Oven和Pizza实体获取值。
但是,这已经过于具体,可能根本不适合您想要解决的实际问题。