为什么CQRS存储库发布事件,而不是事件存储?

Gol*_*den 10 cqrs

根据http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young,负责使用事件发布者发布事件的组件是存储库.

我的问题很简单:为什么?

在这篇博文中,我们被告知:

域存储库负责发布事件,这通常在单个事务内部,同时将事件存储在事件存储中.

我希望这可以作为事件存储的任务:一旦存储了一个事件(或多个事件),它就会被发布.

那为什么它在存储库中呢?

Den*_*aub 9

您的域模型不知道存储机制.另一方面,无论您使用事件存储,经典SQL存储还是任何其他持久性方法,它都必须确保发布相应的事件.

如果您依赖事件存储来发布事件,那么您将与存储机制紧密耦合.