【发布时间】:2011-04-08 04:54:35
【问题描述】:
您可以使用 CQRS(命令-查询职责分离)架构模式来构建像 StackOverflow 这样的网站吗?我对 CQRS 和 DDD(域驱动设计)相对较新,并且正在探索该模式并尝试为我熟悉该模式的站点建模。虽然我可以看到 CQRS 对于像 StackOverflow 这样的网站在许多方面都很有用,但有一些领域我不确定是否可行(或者,至少,我无法立即弄清楚)。具体来说:
- 提问 当我创建一个问题时,我会看到它 立即并可以编辑它。在 CQRS,我发出类似的命令 'AskQuestion' 并创建一个事件 称为“问题”。最终, 问题被推到 非规范化数据存储。但是SO的 经验是立竿见影的。这是 CQRS 可能吗?
- 投票 我的投票 立即反映。在 CQRS 中, 我会想象这些命令/事件 最终通过事件 总线到读取存储。但是SO给了 立即告诉我信息。
我真正关心的是 SO 提供的即时反馈的概念。 CQRS 可以提供这个吗?如果是这样,这将如何完成?有没有很好的例子来说明如何处理这个问题?
如果有帮助,我的环境是 VS2010/C#/SQL2008R2,但我对 SQLite 等其他选项持开放态度。我还在研究 NCQRS 和 LOKAD 的框架,以及 Mark Nijhof 的示例,并计划下载格雷格·杨的样本。我没有找到更多关于 CQRS 样本的其他内容。
谢谢!
【问题讨论】:
-
CQRS 必须做什么,是否“立即”完成某事?如果您发送事件
QuestionAsked,您可以确定它已完成,因此它会在前端更新。如果数据库立即更新或在 10 分钟内更新,对用户没有影响。当然,如果发生错误,您可能想向用户提供反馈,但那里有很多可能性。对于即时消息传递系统也是如此。你只需要确保你的消息足够快地被持久化和重定向,所以这是一个基础设施/性能问题。
标签: architecture cqrs