【发布时间】:2023-11-08 03:44:01
【问题描述】:
我继承了一个 MVC2 项目,使用了一个非常标准且保存完好的 DDD 模式。我也对整个 DTO/ViewModel 辩论进行了大量阅读。
目前我们的 DTO 经常像 ViewModels 一样使用。老实说,这对我们正在做的事情没有影响,但我想在升级网站时使用适当的 ViewModel。
这是我的问题:
我们的“域”项目模型当前持有实体并将 DTO 返回给我的控制器。现在我需要将该 DTO 映射到 ViewModel。我应该在哪里做这个?
- 在控制器中?
- 在域项目中?
- 其他地方?
我将我的 ViewModel 与“Web”项目中的视图放在一起,因此在域项目中转换 DTO -> ViewModel 感觉不对。在控制器里做也感觉不对。
其他人做了什么?
编辑:
This question/answer 建议在控制器中处理它。这肯定很容易过度思考。
【问题讨论】:
-
这里的 DTO 是什么意思?这是你的领域模型吗?
-
@CuongLe 对我来说:DTO == “数据传输对象”,大多数人在 .NET/Java 和 DDD 领域讨论 DTO。我还在学习所有这些,所以我不知道还能说什么!
-
我还是很困惑,我暗示你提到的 DTO 是 DOMAIN ENTITY?因为 DTO 本身就是在分布层工作的“数据传输对象”。 DTO 和 View Model 是同一个级别的,如果你在 service 中工作,top model 称为 DTO,如果你在 application 中工作,top model 称为 View Model
标签: asp.net-mvc domain-driven-design viewmodel dto separation-of-concerns