29得票2回答
CQRS+DDD+事件溯源中的跨聚合通信

在基于DDD原则和事件溯源的环境中,如何使分离的聚合根(AR)相互通信? 例如,我有一个名为Facility的聚合根(AR),它具有负责创建Booking AR的工厂方法。 Booking是Person AR和Facility AR的时间敏感组合。 一个Person只能被预订到一个Facil...

27得票3回答
事件溯源资源

寻找关于事件溯源方面的有用讨论组、文章、成功案例、参考应用程序和工具(.Net)的建议。 我已经熟悉以下内容: Fowler的文章:http://martinfowler.com/eaaDev/EventSourcing.html Greg Young的文章(其中包含下载文档的评论):h...

27得票1回答
CQRS:存储事件并发布它们 - 我该如何安全地做到这一点?

如我在为什么CQRS存储库发布事件而非事件存储?中所学,CQRS存储库的任务是发布事件。到目前为止还不错。 当然,存储事件和发布事件应该在一个单一的事务内完成。从技术上讲,这意味着向存储库写入一个或多个记录,并向消息总线发布一个或多个事件。因此,简单的数据库事务是不够的,需要进行分布式事务。 ...

25得票1回答
Axon框架与Eventuate比较

我们目前正在研究CQRS和事件溯源,并发现两个主要的框架用于处理这两个问题:Axon Framework 和 Eventuate。两者都在持续开发中,不过Eventuate现在更活跃地在RBMH repository中开发。 我正在为两者克隆一些示例项目,得出结论是Eventuate看起来更...

23得票2回答
快照的创建和恢复策略

我一直在阅读关于CQRS+EventSourcing模式的内容(我希望在不久的将来应用它),我发现所有幻灯片和演示文稿都有一个共同点,那就是为了恢复模型状态而拍摄快照,但是没有分享这样做的模式/策略。 我想知道您在这方面的想法和经验,特别是涉及以下方面: 何时拍摄快照 如何建模快照存储 ...

23得票4回答
如何在CQRS+事件溯源架构中管理ViewModel的更改

我们目前正在评估CQRS和事件溯源架构。我试图理解使用这种设计的维护影响。我正在努力找到答案的两个问题是: 1)如果在应用程序运行一段时间后,有一个新的要求需要向ReadModel数据库中的ViewModel添加一个额外的字段呢?例如,在以前未考虑的情况下,客户邮政编码在CustomerLi...

22得票4回答
CQRS事件溯源:在发送命令时从事件存储中检查用户名是否唯一

当我们拥有特定唯一的实体ID时,事件溯源(EventSourcing)可以完美运作。但是当我尝试从事件存储(EventStore)中获取特定实体ID以外的信息时,我遇到了困难。 我正在使用带有事件溯源的CQRS(Command Query Responsibility Segregation...

22得票3回答
事件溯源和乐观并发控制

当你想让代码在竞态条件下运行时,常见的做法是使用乐观并发控制(OCC)。根据维基百科: ...在提交之前,每个事务都会验证没有其他事务修改了它读取的数据。如果检查发现有冲突的修改,提交事务将回滚... 一种实现OCC的方法是检查待修改数据的版本。如果版本不同,则表示其他事务已经修改...

21得票1回答
使用CQRS的Read Side实现方法

我已经加入了一个正在积极使用CQRS + 事件溯源的项目。乍一看,它按照所有那些书籍和博客的要求实施,但最终我意识到实现中有什么问题。 这是CQRS架构: 最初我从这里获取了这张图片。 如我们所见,读取端从队列接收事件,并将其逐个传递到不同的投影(去规范化)集合中,然后通过AddOrUp...

19得票1回答
CQRS事件存储聚合根与投影的区别

在CQRS事件存储中,"聚合"是否包含事件的摘要视图或仅包含对这些事件(组ID)边界的引用? 投影是事件的视图或表示,因此在代表边界的聚合的情况下,这对我来说是有意义的,而如果聚合包含当前摘要状态,我会困惑两者之间的重复。