我们目前正在研究构建(Web)应用程序的新方法,想到的一种方法是 CQRS。我们对此仍有几个疑问:
如果我理解正确,这可能意味着拥有 2 个或更多域模型、一个核心域模型和一个用于 webapp 的读取模型。
这个核心域模型不是由 webapp 直接写入,而是由不同的服务写入。我们正在考虑使用 NServiceBus 来制作发布者/处理程序,以便 webapp 可以发布用户所做的更改。然后订阅者将处理消息并更新核心域模型和读取模型。
我们想要达到的目标:
用户 A 创建 10 个新对象,例如书籍。
消息订阅者有很多消息要处理,因此在更新域模型之前需要几分钟。
当用户 A 刷新页面时,他应该会看到他刚刚创建的 10 本书。
当用户 B 刷新页面时,他实际上并不需要查看这些项目。
这 10 个新对象最好存放在哪里?
将此数据与读取模型中的“旧”数据合并的最佳方法是什么?
假设用户 B 也确实需要查看这些新项目,那么存储这些数据的最佳方式是什么?
处理 2 个不同用户同时添加同一本书的最佳方法是什么? (所有数据都是一样的,除了书的描述。它仍然是同一本书:)
您可以通过什么方式处理对这 10 个尚未写入核心域模型并因此没有唯一 ID 的对象之一的更新?