DTO 在多层应用程序中的正确位置

DTOs right place in a multilayered application

在多层应用程序中,DTO(数据传输对象)的正确位置是什么?有这样的观点DTO用于数据存储层到领域层的通信,但不适合领域层到上层逻辑层的交互。

我正在开发一个包含以下层的应用程序:数据存储、域、服务、表示。那么 link 服务层和表示层的正确方法是什么?我想从域层外部打开对域对象的访问是封装漏洞,所以解决该任务的唯一方法是使用 DTO,但我不确定。

很多人(尤其是DDD爱好者)说DTO只是为了远程调用,基本上是为了封装那些远程对象。

也就是说,我真的更喜欢尽可能明确地将表示层与服务层分开。表示层需要与服务层进行大量隔离。特别是对于更厚的客户端成为新常态(Angular 网站、移动设备等)。这意味着将您的服务层视为远程服务通常是一项不错的投资。随着时间的推移,它可能会成为一个真正的远程接口。

UI/Service 边界通常也是最难确定契约故障的地方...大多数 UI 框架在识别重大变化方面做得很糟糕。