域驱动设计:DTO在哪里?

时间:2018-10-29 20:22:48

标签: java architecture domain-driven-design dto

我对域驱动的设计架构有疑问。在尝试使用REST之前,一切看起来都很不错。我应该使用DTO而不是前端上的实体。

我的架构看起来像: enter image description here

我的问题是:

我应该使用 web模块 并坚持使用DTO吗?这是正确的方法吗?

4 个答案:

答案 0 :(得分:2)

enter image description here

  • DDD主要是指孤立的整体系统,或者至少没有涵盖跨系统通信的各个方面。

因此,即使您按照“ DDD”工作,也必须做出决定-如何处理这些方面。

参考:DDD书中介绍的模式列表及其关系: enter image description here

答案 1 :(得分:2)

您应该将REST视为允许访问应用程序层服务的众多“端口”之一。 REST,RPC,Websocket等服务将调整输入并将其映射到应用程序层调用,反之亦然。在每个服务边界,您仍然可以灵活地调整响应,而不必与应用程序服务方法响应进行1-1映射,但是可以。

答案 2 :(得分:0)

根据Vaughn Vernon的《实现域驱动设计》一书,DTO位于应用程序层中。

答案 3 :(得分:0)

理想情况下,域模型应该由工厂创建。因此工厂可以接受DTO并返回Domain模型的实例。或者,您可以使用接受DTO的Builder模式来创建Domain模型。这样,您的域模型就不会受到DTO的干扰,并且体系结构图中的Application层应接受DTO作为参数。

在您的图中,我不确定应用程序层的目的是什么。因为我们所谓的应用程序应该是领域模型。