【发布时间】:2013-08-10 11:02:10
【问题描述】:
我正在使用带有 NServiceBus 的 ASP.NET MVC,由于绝大多数命令都可以在考虑到最终一致性的情况下执行,因此有一小部分任务似乎可以通过即时一致性来简化事情。
我对用于实现此目的的各种方法进行了大量研究,但很少有人提出任何理由来说明为什么该特定方法更可取。我在生产环境中没有任何使用 NSB 的经验,因此如果有任何方法以任何方式限制可扩展性,我也很高兴。
以下是我遇到的大致方法:-
- 不同步,将信息伪造回客户端。我对此的保留首先是,您必须处理伪造数据并且命令失败的情况(不太可能的情况)等等重要的是,如果命令中任何数据的初始化很复杂,那么伪造这些数据的能力无论如何都不一定可行。
- 任务完成后回复(或发布事件以供客户端接收)。我对此的保留是这意味着分布式架构变得更加复杂,我不确定负载平衡客户端是否会导致问题,因为只有一台客户端计算机应该收到回复。
- 轮询读取存储,直到数据出现。我对此的保留是它使读取存储比其他选项承受更多负载。
有没有比上述三个更好的选择,如果有,为什么?如果不是,以上三个哪个更好,为什么?
我假设答案不是主观的,其中一个更适合使用 NServiceBus 在 CQRS 中实现命令基础架构。
谢谢。
【问题讨论】:
-
只是不要将 CQRS 用于同步部分。没有规定一旦开始使用 CQRS 就必须使用它。海事组织,拥抱欧共体。如果您引入任何类型的同步操作,那么您在可扩展性方面注定要失败。 PS。 NSB 是双重许可的,只是提醒一下。
标签: asp.net-mvc nservicebus cqrs