只是试图就 CommandHandlers 是否可以/应该与其他 CommandHandlers 通信获得一些意见。
这是我刚刚遇到的一个简单案例。我有一个 ChangePasswordCommandHandler,其命令如下所示:
public class ChangePasswordCommand : Command
{
public string Email { get; }
public string OldPassword { get; set; }
public string NewPassword { get; set; }
}
因此,在处理程序内部,我需要验证用户的旧密码,所以我看到它有三个选项:
- 向我的 ValidateCredentialsCommandHandler 发出呼叫。
- 将一些验证逻辑分解到两个处理程序都可以使用的服务中。
- 让调用进程首先进行此检查,但现在业务逻辑泄漏到我的域层之外。
我在调度到其他处理程序时遇到了一些技术问题,主要是 b/c 我正在使用每个 Web 请求的事务,所以我有两个事务试图竞争。
想法?