领域驱动设计——CQRS + ES的使用

Domain Driven Design - CQRS + ES usage

我有一个问题要问那些在自己的项目中实施了 CQRS + 事件溯源架构的人。

我想知道,从长远来看,您的项目是使用 CQRS 开源库还是自己实现更好?

如果是自己开发,是应该作为公司的库来实现,还是应该与使用它的项目一起使用?

每种方式的优缺点是什么?

在这两种情况下,您都应该设计正确的接口来将您的域与基础架构本身分离。在这一点上,两种解决方案(自制与开源)是一个品味问题。

自制解决方案可让您更好地了解整个基础架构。如果您准时迟到或需要尽快准备好,这是一个缺点。

开源解决方案为您提供社区支持,同时您仍然可以查看代码和学习。如果项目死亡是一个问题,但你有源代码并做你想做的事(甚至复活它),或者如果你真的被你的领域解耦,你可以轻松更换基础设施。

我的建议是 NEventStore。

我想说的是尝试实施一个基本的自制解决方案,同时使用开源包作为指导。然后一旦完成使用开源包 (NServiceStore)。

可能看起来没有必要,但我在实现 CQRS 时发现它有助于理解 CQRS 的内部工作原理。与直接使用包相比,我能够更好地掌握 CQRS 模式并对我的业务规则做出更明智的决定。

此外,就像 marianoc 提到的那样,如果将来有需要,更换基础设施实施应该不难。