执行CQRS时查看模型位置



假设您有一个分层项目,分为表示层、业务层和数据访问层。如果您使用CQRS,您将直接从数据访问层查询到表示层,并绕过业务层。

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

这里也存在类似的问题——MVC 3应用程序中的模型、视图模型、DTO

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

就我对CQRS的理解而言,您将从传递到UI(PresentationLayer)的查询端(又名DataAccessLayer)获得DTO(DataTransferObjects)。

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

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

最新更新