gpt4 book ai didi

c# - 领域驱动设计中层与层之间的数据传输对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:39 25 4
gpt4 key购买 nike

enter image description here

域层通过数据传输对象 (DTO) 与其他层进行通信。我对 DTO 感到困惑。

DTO 1 位于领域层和表示层之间。

DTO 2 位于域和数据层之间。

我应该在层之间创建两个不同的 DTO 对象还是只创建一个 DTO。专业的方法是什么?

最佳答案

让我们遍历所有层:

  • 数据访问层 (DAL)。它用于从数据库 (DB) 获取数据。

通常它知道领域实体和领域层。

DAL 可以返回域实体DTO(面向数据库的数据结构)。如果需要,可以使用这些 DTO 或域实体来构建表示层( View 模型)的 DTO。

域实体通常很重,需要 data mappers或任何 ORM。我更喜欢使用 Domain Entities,映射它们并避免使用其他 DTO。否则 DTO 也应该被映射。

  • 领域层(领域模型)。它用于表示业务实体及其行为、业务规则、纯业务逻辑。

域层应该对实体在某处(例如在数据库中)的存储方式一无所知。它可以有自己的 DTO,这可以是重构的结果 Introduce Parameter Object .

  • 表示层 (UI)。它用于向用户呈现 UI。

它应该了解数据访问层以从数据库加载数据,并了解领域层以访问其业务逻辑。

它可以有自己的 DTO - View 模型,它们是域实体或数据库友好 DTO 的用户界面友好表示。表示层有责任了解 View 模型

如果您打算只有一个表示,您的应用基础设施也可以作为表示层的一部分来实现,但通常它是一个单独的应用层。

enter image description here

关于c# - 领域驱动设计中层与层之间的数据传输对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com