【发布时间】:2019-09-04 08:28:05
【问题描述】:
我继承了一些仍在进行中的代码。我认为它有一个明显的架构问题:
它有一个包含所有领域实体的项目(领域层)和一个包含所有应用服务的项目(应用层)。应用层依赖于领域层。到现在为止还挺好。然后是第三个项目,其中包含应用层的所有视图模型。我将其称为视图模型层。很好。
问题是,我已经意识到领域层对视图模型层具有积极的依赖关系。它是什么,他们在这里为每个实体放置了一堆元数据,主要是各种字符串字段的最大长度,并且域实体和视图模型都引用了这些常量值。
我很确定以这种方式让您的域模型依赖于视图模型是非常糟糕的。我发现这一点是因为我想将域模型用于视图模型中的某些东西,但我发现我不能这样做,因为它会导致循环引用。
所以我的问题是:这种架构有多糟糕?或者我真的错了,这根本不是问题。我实际上找不到答案,可能是因为它被认为是如此明显。 此外,人们通常对域实体和视图模型都通用的字段元数据(如最大长度)做什么?在多个地方写出来似乎很浪费。
我正在使用带有 Angular 客户端的 c# MVC 来实现它的价值。
提前致谢。
【问题讨论】:
-
你的意思是领域模型依赖于视图模型?因为你帖子的标题让我想到了相反的情况。
-
哦,哎呀。你是对的谢谢。改了标题。
标签: mvvm architecture domain-driven-design layer onion-architecture