Service 作为InputModel/ViewModel的DTO在分层架构中的位置

Service 作为InputModel/ViewModel的DTO在分层架构中的位置,service,architecture,domain-driven-design,layer,Service,Architecture,Domain Driven Design,Layer,我试图理解InputModel和ViewModels在4层体系结构中的位置 演示|应用|领域|基础设施 鉴于应用程序层负责表示层和域层之间的数据交换,我认为,它们必须位于该层内,以及将其转换回域实体的适配器,反之亦然 InputModels,也称为命令,在ASP.NET MVC中,它们可以与ViewModels一致 在演示文稿中查看模型对我来说毫无意义。从应用层,我应该将ViewModels返回到演示文稿,并接收ViewModels以将其映射回域实体。如果演示文稿中有ViewModels,并且演

我试图理解InputModel和ViewModels在4层体系结构中的位置

演示|应用|领域|基础设施

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

InputModels,也称为命令,在ASP.NET MVC中,它们可以与ViewModels一致

在演示文稿中查看模型对我来说毫无意义。从应用层,我应该将ViewModels返回到演示文稿,并接收ViewModels以将其映射回域实体。如果演示文稿中有ViewModels,并且演示文稿引用了应用程序层,那么我将有一个循环引用

另外,例如,如果我在ASP.NET MVC中内置了一个演示文稿,并且我有必要为Windows应用程序更改它,那么我将丢失这个符合我的必备条件的ViewModels,这是一个遗憾,因为我已经内置了所有东西来更改演示文稿技术

我正在读微软.NET的Dino Esposito和Andrea Saltarello的书:企业架构。他们没有过多地谈论应用程序层,只是说,这一层应该协调域服务和存储库,以完全填充用户案例,并在演示文稿中隐藏域


是这样吗?我应该把这个DTO放在应用层中吗?如果没有,它们在拉桑纳的什么地方合适?

应该在依赖食物链中两个层次中较高的那一层定义DTO,以避免循环引用。这将意味着在一个/六边形体系结构中的应用程序层,因为依赖关系指向内部——表示引用应用程序。我不知道其他分层架构样式。或者,您可以将DTO放置在它们自己的独立层中,由其他两个参照,并位于它们之上。

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

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

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