我正在学习CQRS模式,因为我们将在新项目中使用它。到目前为止,我有几个问题:
示例任务:我将使用cron命令从不同的提供程序(不同的API)获取信息,并且此cron命令的职责是:
与CQRS相关的问题:
如果以上所有问题都正确,那么我可以这样做:
不要对我判断得很严格,我正在学习DDD和相关模式的概念。我只是问一些问题,我不清楚。非常感谢
答案 0 :(得分:2)
我可以在一个系统请求中只有几个CQRS命令和查询吗? 在上面的示例中,我需要从数据库(查询)获取现有数据, 保留数据(命令)等等。
不,您不能。每个请求要么是一个命令,要么是一个查询。
关于从API提取数据的逻辑,我可以将其视为 CQRS查询作为获取数据或CQRS查询的过程是 仅从内部存储而非外部获取数据的过程 API?
命令和查询引用本地数据库。通过远程API从外部服务中获取数据是与另一个BC的集成(请参见DDD上下文映射模式)。
将视频存储到s3并存储信息的过程如何? 要上传表格,我可以考虑将资产存储到S3的过程吗 作为CQRS命令,此命令将返回我需要存储的数据 以后再上传?
将视频存储到s3不是命令,而是与外部服务的集成。您将必须进行集成(再次使用上下文映射模式)。
我不想立即存储它,因为上载实体是其中的一部分 聚合以存储主要信息,其中主要信息实体为主要 聚合实体。
我不知道您的域模型,但是如果上载是聚合中的子实体,那么将内容存储在上载表中也不是命令。命令是指集合。将信息存储在上载表中将是命令的一部分。
结论:
命令或查询是在应用程序层边界(应用程序服务)的事务操作。他们处理您数据库中的数据。每个命令/查询都是一个事务。