【发布时间】:2012-03-16 08:27:43
【问题描述】:
我正在尝试使用事件溯源实现我自己的 CQRS 基础架构,以便更好地学习它。作为一个示例项目,我正在实现一个博客引擎,我知道它可能并不完美,但我只想做一些真正的事情。
我现在遇到的问题是验证。每个帖子都有一个shortUrl,shortUrl 应该是唯一的,但是我应该把这个验证放在域的哪里?我知道在我发送命令之前,我会通过从我的读取存储中读取来检查它在创建创建发布命令或更新发布命令时是否有效。
我能想到两个“解决方案”。
- 拥有一个
Blog聚合,用于跟踪所有与博客相关的设置以及对所有帖子的引用。但在我看来,这个问题是我必须在那种情况下处理聚合之间的通信,并且每次我需要验证shortUrl的唯一性时,我都需要从事件存储中读取所有事件以创建所有这些帖子看起来很复杂。 - 我的第二种选择是,当事件被触发并且我的创建读取模型的事件处理程序注意到它将有两个指向不同帖子的短 url 时,它会触发一个重复的短 url 事件。让读取模型在检测到错误时触发事件是否有效?
还有其他选择吗?请注意,我知道我的域可能不适合 cqrs 和 DDD,但我这样做是为了在一个小域中学习。
【问题讨论】:
标签: validation domain-driven-design cqrs