执行CQRS时的ViewModel位置

时间:2012-07-13 07:34:15

标签: asp.net-mvc viewmodel dto cqrs 3-tier

假设您有一个分层项目,分为表示层,业务层和数据访问层。如果您使用的是CQRS,那么您将直接从数据访问层进入表示层并绕过业务层。

在这种情况下,如果您在表示层中使用ViewModel,那么您的数据访问层将需要引用表示层,以根据表示层中的ViewModel返回数据。这不是反模式吗?

此处存在类似问题 - Models, ViewModels, DTOs in MVC 3 application

但是如果您正在进行CQRS,那么您将不会在答案中提到的ViewModel和Domain对象之间进行映射,因为您绕过了域/业务层,那么您应该在哪里放置ViewModel?

1 个答案:

答案 0 :(得分:2)

据我了解CQRS,您将从查询端(也称为DataAccessLayer)获取传递给UI(PresentationLayer)的DTO(DataTransferObjects)。

这些DTO可以直接用作View的ViewModel,如果它们为View提供了所有必要的数据,可以与ViewModel中的其他DTO聚合。我认为这取决于视图中显示的数据。

回答你的问题:ViewModels是PresentationLayer的一部分。