加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在需要时在CQRS中提供同步行为?

发布时间:2020-12-16 03:15:57 所属栏目:asp.Net 来源:网络整理
导读:我正在使用带有NServiceBus的ASP.NET MVC,并且尽管绝大多数命令都可以在最终的一致性中执行,但是只有少数任务可以立即实现一致性. 我已经对用于实现这一目标的各种方法进行了大量研究,但很少有人提出任何理由来说明为什么这种特殊方法更可取.我在生产环境中
我正在使用带有NServiceBus的ASP.NET MVC,并且尽管绝大多数命令都可以在最终的一致性中执行,但是只有少数任务可以立即实现一致性.

我已经对用于实现这一目标的各种方法进行了大量研究,但很少有人提出任何理由来说明为什么这种特殊方法更可取.我在生产环境中没有任何NSB经验,所以知道任何方法是否以任何方式限制可扩展性也是很好的.

以下是我遇到的方法: –

>没有同步,将信息伪造回客户端.我对此的保留首先是,您必须处理伪造数据并且命令失败的情况(不太可能发生的情况),更重要的是,如果命令中的任何数据的初始化很复杂,那么伪造的能力无论如何,这些数据不一定可行.
>任务完成后,回复(或发布由客户接收的事件).我对此的保留意味着这意味着分布式架构变得更加复杂,我不确定负载平衡客户端是否会导致问题,因为只有一台客户端计算机应该收到回复.
>轮询读取存储直到数据存在.我对此的预留是它使读取存储比其他选项更多负载.

有没有比上面三个更好的选择,如果有,为什么?如果没有,以上哪三个更好,为什么?

我假设答案不是主观的,并且适合使用NServiceBus来实现CQRS中的命令基础结构比其他更好.

谢谢.

解决方法

我对此的看法是,实际端点不应该执行工作,而是将其交给某些“任务”(应用程序服务/操作脚本)对象.该对象立即执行工作.

因此,对于绝对必须具有100%一致性而非调用相同任务对象而不是发送命令以供稍后处理的情况.您可能仍希望将该命令用于其他方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读