Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 事件和命令差异和命名约定_Events_Design Patterns_Architecture_Domain Driven Design_Cqrs - Fatal编程技术网

Events 事件和命令差异和命名约定

Events 事件和命令差异和命名约定,events,design-patterns,architecture,domain-driven-design,cqrs,Events,Design Patterns,Architecture,Domain Driven Design,Cqrs,最近我在区分这两个方面遇到了一些困难。更具体地说,我浏览了stackoverflow,其中有一条声明,事件可以用两种不同的方式命名: 用“ing”或过去时“ed”。这可以在这里看到 同时,CQR声明名称必须是过去时,然后按照他们的指导原则,上面以“ing”形式命名的事件将是命令。这让我有点困惑?事件是否意味着不同的事情取决于建筑环境和运动。关于事件和命令有统一的观点吗? CQRS,你读过的仅仅是过去时态事件的名字,可能是因为他们没有考虑前事件。命令命令某事发生,因此通常是命令式的(“点击!”、

最近我在区分这两个方面遇到了一些困难。更具体地说,我浏览了stackoverflow,其中有一条声明,事件可以用两种不同的方式命名: 用“ing”或过去时“ed”。这可以在这里看到


同时,CQR声明名称必须是过去时,然后按照他们的指导原则,上面以“ing”形式命名的事件将是命令。这让我有点困惑?事件是否意味着不同的事情取决于建筑环境和运动。关于事件和命令有统一的观点吗?

CQRS,你读过的仅仅是过去时态事件的名字,可能是因为他们没有考虑前事件。命令命令某事发生,因此通常是命令式的(“点击!”、“开火!”、“挠痒痒!”)。如果命令是动名词(“单击!单击得更快,你!或者我炒了你!”),则没有任何意义。因为它会引发一个动作,它可能会触发一个或多个通知(=事件),告知即将发生某件值得注意的事,然后再告知确实发生了某件值得注意的事

-ing事件(例如(“点击”)发生在事件处理之前,例如有人想要阻止它。有时,它们被称为“在”事件之前(例如“在点击之前”),或“将”事件(“将点击”)

-ed事件(如“点击”)发生在事件处理之后,例如为了影响受抚养人。有时,它们被称为“事件之后”(如“点击后”)或“did”事件(“点击后”)


只要你(和你的团队,以及你的潜在合作伙伴)对此保持一致,你遵循的具体方案并不重要在很大程度上是微软的事情,遵循微软所说的。如果你为Mac编码,这些概念是相似的,但是你最好还是顺其自然去做。

< PQ>你读过的只是过去时态事件的名字,可能是因为他们没有考虑前事件。一个命令命令一些事情发生,因此通常是在EvurATV中形成的。e(“点击!”、“开火!”、“挠痒痒!”)。命令的动名词(“点击!点击得更快,你!或者我开枪!”)没有任何意义,因为它会引发一个动作,它可能会触发一个或多个通知(=事件),通知某件值得注意的事情即将发生,然后通知某件值得注意的事情发生了

-ing事件(例如(“点击”)发生在事件处理之前,例如有人想要阻止它。有时,它们被称为“在”事件之前(例如“在点击之前”),或“将”事件(“将点击”)

-ed事件(如“点击”)发生在事件处理之后,例如为了影响受抚养人。有时,它们被称为“事件之后”(如“点击后”)或“did”事件(“点击后”)

只要您(以及您的团队和潜在合作伙伴)对此保持一致,您遵循的具体方案并不重要。因为CQR(以该名称命名)在很大程度上是微软的事情,所以请遵循微软的说法。如果您为Mac编写代码,概念是相似的,但您最好还是遵循它

对于什么是事件和命令,是否有一个统一的视图

统一?不,可能不是。但是如果你想要一个权威的定义,Gregor Hohpe的企业集成模式是一个很好的起点

在上下文中,你应该考虑Greg Young的观点是权威的。他很清楚命令消息应该使用命令式拼写,其中事件使用过去完成的变化拼写。

命令的名称
事件的名称
应该被理解为拼写约定——这与URI或变量名的拼写是约定的方式非常相似。正确性根本不重要,而且计算机在很大程度上不看拼写(例如,我们根据消息名称路由消息,而不是查看动词时态)

事件描述对模型状态的更改;所有事件都是
ModelChanged
。但是,我们更喜欢对事件的
类型使用特定于域的拼写,以便更容易区分它们:
MouseClicked
ConnectionClosed
fundstrasfered
,等等

对事件名称使用现在进行时的拼写是很奇怪的,因为消息是对事务点的域模型的描述,现在进行时在语义上延伸到时间点之外。更宽松地说,现在进行时描述的是当前状态,而不是过去的状态变化

这就是说,找到一个好的过去式拼写可能很难,最终它只是一个拼写惯例;与采用自然但不正确的动词时态相比,找到一个与过去式惯例一致的准确拼写所需的工作可能不值得

对于什么是事件和命令,是否有一个统一的视图

统一?不,可能不是。但是如果你想要一个权威的定义,Gregor Hohpe的企业集成模式是一个很好的起点

在上下文中,你应该考虑Greg Young的观点是权威的。他很清楚命令消息应该使用命令式拼写,其中事件使用过去完成的变化拼写。

命令的名称
事件的名称
应该被理解为拼写约定——这与URI或变量名的拼写是约定的方式非常相似。正确性根本不重要,而且计算机在很大程度上不看拼写(例如,我们根据消息名称路由消息,而不是查看动词时态)

事件描述模型状态的更改;所有事件都是
ModelChanged