DTOS作为InputModel / ViewModel适合分层Archicture

时间:2015-08-19 14:30:06

标签: service architecture domain-driven-design layer

我试图了解InputModel和ViewModel在4层架构中的位置。

演示文稿|应用|域名|基础设施

鉴于Application Layer负责表示层和域层之间的交换数据,我认为它们必须存在于该层内,以及适配器将其转换回域实体,反之亦然。

InputModels,也称为命令,在ASP.NET MVC中,它们可以与ViewModels重合。

对演示文稿中的ViewModel没有任何意义。从应用程序层我应该将ViewModel返回到Presentation并接收ViewModels到Mapp它返回到Domain Entity。如果我在Presentation中有ViewModel,并且演示文稿引用了Application Layer,我将有一个循环引用。

而且,例如,如果我在ASP.NET MVC中有一个Presentation构建,并且我有必要为Windows应用程序更改它,我将丢失这个符合我的必要条件的ViewModel,这是一种耻辱,因为我已经内置了所有内容来改变演示技术。

我正在读这本书来自Dino Esposito和Andrea Saltarello,Microsoft .NET:企业架构。他们不会过多地谈论应用层,只是说,这个应该编排域服务和存储库来填充用户案例,并隐藏域中的域。

enter image description here

这是对的吗?我应该把这个DTO放在应用层吗?如果没有,他们在拉桑那哪里适合?

2 个答案:

答案 0 :(得分:3)

DTO应该在依赖性食物链中两个层中较高的任何一个中定义,以避免循环引用。这意味着应用层采用Onion /六边形体系结构,因为依赖关系指向内部 - 表示引用应用程序。我不知道其他分层架构风格。或者,您可以将DTO放在他们自己的单独图层中,该图层将由另外两个图层引用并位于它们之上。

答案 1 :(得分:0)

DTO不是问题域的一部分,它们是实施细节。所以问题是,实施的哪个部分正在使用DTO?但是,DDD中的实体应该完全独立于任何实现,并且只处理特定于域的业务逻辑。