【发布时间】:2016-01-11 17:41:43
【问题描述】:
我在看Onion Architecture pie,我很困惑……
UI 客户端是否应该有权访问 Domain Model 和 Domain Services?还是只发给Application Services 和Core?
确切地说,我问的是:UI 项目是否应该引用域项目?
【问题讨论】:
-
我讨厌这种教条。我认为答案取决于很多事情。如果您正在编写与 REST Web 服务通信的 Web UI,我会给您不同的答案。这就是像 DTO 层这样保持“纯度”的反模式的来源。
-
通常事情不应该直接访问除了它们的直接邻居之外的任何东西。因为结果很容易变成一个混乱的依赖网络。但是,只要您通过应用服务/应用核心获得对域对象的访问权限,我认为这没有违反。
-
我说的是
Enums或其他Entites。例如,当应用程序服务方法以Enum作为参数或返回某个Entity的对象时。在这种情况下,是否应该将Enum或Entity移至 Core? -
应用核心不是一个单独的层,它是域模型、域服务和应用服务在一起的通用术语。
-
阅读 J2EE 设计模式和 DTO。他们就是我所指的问题。我认为创建一个单独的对象层来镜像您的域模型只是将它们传递给 UI 层是一种浪费。
标签: java c# architecture domain-driven-design onion-architecture