gak*_*era 5 architecture cqrs .net-core mediatr
我们正在使用 MediatR 为我们的 dotnet 核心 WebAPI 后端实现“管道”,试图遵循 CQRS 原则。
我无法决定是否应该尝试实现一个IPipelineBehavior
链,或者最好构造一个新的 Request 并从我的 Handler 方法中调用 MediatR.Send(对于请求)。
场景基本上是这样的:
选项 1是我们现在所拥有的: ADeleteRequest
由一个类处理,其中 Handler 检查它是否正在使用,将其标记为已删除,然后将TaskStartRequest
带有参数的 new 发送到 Delete。
选项 2是我正在考虑的: ADeleteRequest
实现标记接口IRequireCheck
, IStartTask
,以及运行的管道:
IPipelineBehavior<IRequireCheck>
首先检查是否正在使用某些东西, IPipelineBehavior<DeleteRequest>
将数据库中的内容标记为已删除并 IPipelineBehavior<IStartTask>
开始任务。我还没有完全弄清楚选项 2 会是什么样子,但这是总体思路。
我想我主要想知道在处理程序中为 TRequest1 调用 MediatR.Send(TRequest2) 是否是代码异味。