Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 根据读取模型构建其他读取模型_Domain Driven Design_Cqrs - Fatal编程技术网

Domain driven design 根据读取模型构建其他读取模型

Domain driven design 根据读取模型构建其他读取模型,domain-driven-design,cqrs,Domain Driven Design,Cqrs,我想知道使用其他读取模型来更新我的particurlar读取模型是否被认为是良好的实践。例如,有两个agreegate根:User和Report。要构建报表查询,我需要用户的当前状态,并且我已经阅读了提供该信息的模型。我可以使用它吗?还是应该仅根据事件(来自不同的AGREGGATE)重建查询 我在这种方法中看到的一个问题是,我可能希望在这些报告中让用户在过去的特定日期处于状态。当然,我忽略了保持阅读最新的问题 也许我可以为报表查询建立支持用户表?答案取决于您希望太多阅读模型的解耦程度 如果您想要

我想知道使用其他读取模型来更新我的particurlar读取模型是否被认为是良好的实践。例如,有两个agreegate根:User和Report。要构建报表查询,我需要用户的当前状态,并且我已经阅读了提供该信息的模型。我可以使用它吗?还是应该仅根据事件(来自不同的AGREGGATE)重建查询

我在这种方法中看到的一个问题是,我可能希望在这些报告中让用户在过去的特定日期处于状态。当然,我忽略了保持阅读最新的问题


也许我可以为报表查询建立支持用户表?

答案取决于您希望太多阅读模型的解耦程度

  • 如果您想要一种微服务类型的解耦(松散的),那么报告读取模型应该只依赖于用户AR生成的事件;在这种情况下,您必须创建另一个读取模型,该模型仅捕获来自用户AR的感兴趣事件(UserWasCreated、UserHasChangedHisUsername等),并且报告读取模型应使用此本地读取模型。在重建报表读取模型时,您还可以重建本地用户读取模型,并获得用户在过去特定时刻的状态(两个读取模型正在同步重建)。这需要更多的代码,但它提供了一个解耦的系统
  • 如果您想要一个单一站点系统,那么报表读取模型可以查询用户读取模型;在这种情况下,由于用户读取模型反映(可能)最新的状态,因此不可能在过去的某个时刻获取用户的状态