MediatR CQRS 命令处理程序验证

MediatR CQRS command handler validation

我在我的项目中使用 MediatR CQRS。

使用 DDD。所以我有一个应用层。

该层中存在的所有中介命令。

假设我有将数据保存到数据库的命令。所以应该是指挥。现在在保存之前我需要根据数据库检查一些密钥是否存在以及一些价格金额验证。如果存在,我需要将验证消息发送回 api。

由于它是一个读操作,这个责任是在命令内部吗?

这种验证在管道行为中处理,并在调用验证行为时直接调用存储库。这是 CQRS 中应遵循的正确方法吗?

这可能比 Software Engineering StackExchange as it is a bit opinion based. However, personally, I put all of my command/query pre-validation logic directly in its own dedicated validator object that's picked up by a pipeline behavior object. I modeled my approach after Jason Taylor's Clean Architecture demo 好一点,我发现预先执行所有复杂的验证大大降低了我的命令和查询的复杂性。

许多开发人员会争辩说,这样的功能对于标准 属性 验证器来说有点过于复杂,但我们已经取得了巨大的成功。如果您想将 属性 验证器(确保字符串不为空或不为空、整数在范围内等的验证器)分离到与数据完整性验证器并存的单独验证器中,这可能是一个选项还有。