具有常见操作的 CQRS 命令 - 重复代码

标签 cqrs

假设我们有几个共享共同逻辑的命令。例如,我有一个具有多个状态的文档。我们在某些状态下可以进行变异操作,但某些逻辑根据其状态而有所不同。使用 If 语句为 3 个以上的状态创建一个 Command 会令人困惑。最好为每个操作制定单独的命令,但是如何处理通用逻辑呢?

我们必须从数据库中获取数据、验证、生成一些辅助文档、写入审计表和其他内容。所以看起来它应该是常见的地方,而制作无意义的 Helper 类是最糟糕的选择。我假设此操作可以/不需要事务。

我已阅读http://scrapbook.qujck.com/holistic-abstractions-take-2/CQRS code duplication in commands 。我正在寻找其他选择。

最佳答案

@Redgood,如果我没记错的话,你描述的一些东西属于域。

确保您的业务/域“逻辑”不会溢出到域之外。我确实使用 ICommand 接口(interface)来标记我的命令,并且其中确实有一些逻辑,但仅用于数据类型验证或其他类型的完整性检查。

就这样吧。从命令的角度来看,您所关心的只是命令中包含的数据是否良好。就是这样。因此,请确保命令中的所有方法都只是为了强制执行完整性。

关于具有常见操作的 CQRS 命令 - 重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41480343/

相关文章:

domain-driven-design - DDD、CQRS/ES 和微服务 是否应该根据微服务的 View 或聚合做出决策?

cqrs - JOliver EventStore 快照

logging - 如何在 cqrs 上下文中正确处理日志记录?

cqrs - CQRS 事件存储的结构

entity-framework - CQRS与 Entity Framework 自跟踪实体/WCF RIA服务兼容吗?

azure-functions - 具有事件溯源和 CQRS 的聚合

node.js - 我应该在 Controller 和域服务之间放置命令总线吗?

design-patterns - 在没有显式读取模型的 CQRS 架构中,哪个处理程序更新数据存储?

oop - 一个实体,不同数据库的不同限界上下文中的多个模型

azure - 如何将事件可靠地存储到 Azure CosmosDB 并仅一次调度到事件网格