Domain driven design 在DDD中:产生无人使用的事件的命令

Domain driven design 在DDD中:产生无人使用的事件的命令,domain-driven-design,cqrs,event-driven,event-driven-design,eda,Domain Driven Design,Cqrs,Event Driven,Event Driven Design,Eda,我正在我的项目中应用领域驱动的设计,我遇到了一个场景,在这个场景中,一个用户操作在我的一个有界上下文中转换成一个命令,从而生成一个事件。然而,我发现我的其他有界上下文都不关心消费这个事件。基本上,这个命令所做的就是在我的有界上下文中保存/更新状态 我的问题是: 命令是否必须生成事件 如果是这样的话,没人听有关系吗 命令不一定要生成事件,尽管它更可取。 事件最重要的好处之一是能够从零开始生成特定日期/时间的系统状态。如果您虔诚地为系统中的所有更改冒泡事件,您将能够按顺序应用事件,并使系统达到您的需

我正在我的项目中应用领域驱动的设计,我遇到了一个场景,在这个场景中,一个用户操作在我的一个有界上下文中转换成一个命令,从而生成一个事件。然而,我发现我的其他有界上下文都不关心消费这个事件。基本上,这个命令所做的就是在我的有界上下文中保存/更新状态

我的问题是:

  • 命令是否必须生成事件

  • 如果是这样的话,没人听有关系吗

  • 命令不一定要生成事件,尽管它更可取。 事件最重要的好处之一是能够从零开始生成特定日期/时间的系统状态。如果您虔诚地为系统中的所有更改冒泡事件,您将能够按顺序应用事件,并使系统达到您的需求状态

  • 嗯,在那个时间点没有人在听并不重要。我假设您正在将事件作为应用程序的一部分持久化到事件接收器/日志中。这样做有两个好处:

    a。如果您要发现一个将来的需求,它将从事件日志中受益,那么您已经领先了一步

    b。即使没有人使用事件,如第一次响应中所述,能够生成特定日期/时间的系统状态也是一种很酷的能力

  • 持续事件和派生系统状态的模式源于事件源。您可能想更深入地了解它,看看它的好处

  • 命令不一定要生成事件,尽管它更可取。 事件最重要的好处之一是能够从零开始生成特定日期/时间的系统状态。如果您虔诚地为系统中的所有更改冒泡事件,您将能够按顺序应用事件,并使系统达到您的需求状态

  • 嗯,在那个时间点没有人在听并不重要。我假设您正在将事件作为应用程序的一部分持久化到事件接收器/日志中。这样做有两个好处:

    a。如果您要发现一个将来的需求,它将从事件日志中受益,那么您已经领先了一步

    b。即使没有人使用事件,如第一次响应中所述,能够生成特定日期/时间的系统状态也是一种很酷的能力

  • 持续事件和派生系统状态的模式源于事件源。您可能想更深入地了解它,看看它的好处

    命令是否必须生成事件

    绝对不是

    如果您使用
    事件源
    作为持久化策略,那么您所有的状态更改都将是“事件”。但是没有特别的理由你必须在其他地方揭露这件事

    是您可能不希望广播某个事件的原因之一

    有足够数量的API用户, 无论你在合同中承诺什么: 系统中所有可观察到的行为 会有人依靠的

    在你手头有足够的数据做出正确的猜测之前,不要猜测活动中应该包含哪些信息

    没人听重要吗

    在一个理想的世界里,不是真的——在实践中,成本很可能会成为决策的一部分

    命令是否必须生成事件

    绝对不是

    如果您使用
    事件源
    作为持久化策略,那么您所有的状态更改都将是“事件”。但是没有特别的理由你必须在其他地方揭露这件事

    是您可能不希望广播某个事件的原因之一

    有足够数量的API用户, 无论你在合同中承诺什么: 系统中所有可观察到的行为 会有人依靠的

    在你手头有足够的数据做出正确的猜测之前,不要猜测活动中应该包含哪些信息

    没人听重要吗

    在一个理想的世界里,不是真的——在实践中,成本很可能会成为决策的一部分

    命令是否必须生成事件

    不,这不是一个要求,命令只需修改实体的状态,而无需发送事件。正如在其他回复中所说,如果使用事件源,您应该要求每个状态更改生成一个域事件

    如果是这样的话,没人听有关系吗

    是和否

    • 是的,因为没有好的或坏的模型,只有有用的模型,如果没有人在听,那么您的建模对任何人都不是真正有用的
    • 否,因为域事件被称为不变量,它们只在业务需求发生变化时反映业务事件和变化,因此它们是API的一部分(请参见发布语言的概念)
    命令是否必须生成事件

    不,这不是一个要求,命令只需修改实体的状态,而无需发送事件。正如在其他回复中所说,如果使用事件源,您应该要求每个状态更改生成一个域事件

    如果是这样的话,没人听有关系吗

    是和否

    • 是的,因为没有好的或坏的模型,只有有用的模型,如果没有人在听,那么您的建模对任何人都不是真正有用的
    • 否,因为域事件被称为不变量,它们只在业务需求发生变化时反映业务事件和变化,因此它们是API的一部分(请参见发布语言的概念)