【问题标题】:CQRS - separate command and event handlersCQRS - 单独的命令和事件处理程序
【发布时间】:2013-04-20 21:05:53
【问题描述】:

查看一些really interesting demo CQRS code here 命令和处理程序被拆分为单独的接口。

public interface CommandHandler<in T>
{
    void Handle(T command);
}

public interface EventHandler<in T>
{
    void Handle(T @event);
}

我正在自动连接命令和事件,似乎 可能是 membus 的限制,它只能连接 CommandHandlers 或 EventHandlers,但无论哪种方式,我都在思考:

鉴于两个接口都有一个 Handle 方法,如果可以使用单个公共命令/事件Handler 接口代替,那么以这种方式拆分命令和事件的想法是什么?

【问题讨论】:

    标签: cqrs


    【解决方案1】:

    区别在于语义 - 事件和命令在语义上是不同的消息类型,将这种区别明确化是有益的。由于每种消息类型可能具有独特的处理要求,因此可以在组织和功能方面获得好处。

    【讨论】:

    • 同样,随着时间的推移,单个命令可能会由于其处理而最终产生多个事件甚至一种类型的事件。
    • 我意识到这是一个非常古老的评论,但我只想提一下,根据某些条件产生一个事件或(排他性)另一个事件的单个命令有点的反模式。相同的命令应该总是导致相同的事件(或相同的多个事件),除非命令处理程序通过聚合知道的一些状态检查/约束。
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多