微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每个不同客户的CQRS单独视图? 网络,桌面,移动

如何解决每个不同客户的CQRS单独视图? 网络,桌面,移动

我们正在建立库存系统。我们进行CQRS和EventSourcing。我们有单独的ReadModel(视图),如OnHandSTockView,InTransitSTockView等,其中每个视图在db中都有其状态(1个视图= 1个sql表,已规范化)。在设计服务合同时,我们应如何设计可重用性?如果客户端A(WEb平台,React)需要inTransitView,而移动客户端需要inTransitView,则列数可能会有细微的差异,我们应该在Db中保留1个表并创建1个服务合同(可同时用于两个客户端)还是针对每个特定对象创建2个表查看每个客户有2个服务合同?还是应该是sql中的1个表和2个针对不同客户端的rest端点?

解决方法

您要概括什么,您要优化什么?

我将从您提到的第一个选项开始: 在Db中创建1个表并创建1个服务合同(可同时用于两个客户) ,因为这会使您以尽可能将责任转移给不同的客户,以便仅使用他们需要的数据。

如果您开始注意到使用 2个端点和单个非规范化表 -一个端点具有简化的数据,而另一个端点具有扩展的数据,则可以节省大量资源,然后下一步将是合乎逻辑的。维护的合同更多,因此这对您来说是维护成本,但如果计划优化,这是有道理的。

每个客户端每个特定视图2个表,并带有2个服务合同 -此解决方案和其他任何解决方案都可能是您使用先前解决方案解决了其他特定问题的结果。对于具有相同数据,但用于不同目的并以不同方式进行优化,这是有意义的。例如,外观相同的数据,但是一个被搜索引擎使用,第二个被用作文档数据库/关系数据库。不仅可以按原样投影事件,也可以通过其他方式进行这种投影(即以某种方式将其与其他投影的数据联系起来)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。