我怎样才能避免使用 prooph 的事件溯源?

How can i avoid using prooph's event sourcing?

我心目中的事件溯源概念是事件溯源与领域层相关,不能与基础设施层耦合。所以我不会使用 prooph/event-sourcing 组件,这就是 Prooph 的团队不会维护事件源组件的原因。 (this article提到)

问题来了,Aggregate、DomainEvent等属于Domain层,放在event-sourcing组件中。事件存储属于基础设施层,所以我可以直接使用 prooph/event-store 组件。但是我发现classProoph\EventSourcing\Aggregate\AggregateRepository用在了prooph/event-store-symfony-bundle,为什么AggregateRepository放在事件源里呢?我认为 Repository to Infrastructure conecrning,事件存储 symfony 包不应该再使用事件源组件并且 Repository 也不应该放在事件源中。

这让我很困惑。所以我现在不能使用 prooph/event-store。

你怎么看?

存储库是域模型和基础结构之间的link。它被放入事件溯源组件中,因为事件存储根本不关心聚合及其组织方式。事件存储管理事件流。只有存储库才能使它成形。它使用偶数存储的事件流功能来管理聚合的事件历史记录。因此,存储库也是您的责任。你是对的,新版本的 symfony 包应该不再包含存储库实现,而只提供 prooph/event-store。那还没有完成。事实上,prooph/event-sourcing 会一直维持到 2019 年底,所以我们并不着急。

无论如何,我强烈建议您看一看Event Machine。目前它基于 prooph/event-sourcing、服务总线和事件存储,但已经提供了一个抽象层和一种将域模型和系统的其他部分与 prooph 和 Event Machine 本身完全分离的方法。只需完成教程即可了解更多信息(需要 4-6 小时)。