我是轴突框架的新手。我研究了CQRS模式的理论。我知道,CUD与读取操作是分开的,它们都构成2种不同的服务。我的假设是我将有2个具有相同表和关系的数据库(CUD将具有未索引表,read将具有完全索引表),这些数据库必须同步。现在,我开始着眼于CQRS命令的实现部分已经完全理解成为一场噩梦。我运行了一些示例,发现创建的数据库表是完全不同的。如果有人经历过同样的情况,请尊重我的理解,请简单用词解释在轴突框架中有何不同
[CQRS指示您将在一个“应用程序领域” /上下文中拥有两个不同的模型,即命令模型和查询模型。
从存储角度来看,两种模型的表示方式完全取决于实现细节,而您假设您将使用带/不带索引表的常规RDBMS。
同步问题再次是一个完全不同的问题,在该问题上,您又有几种选择。就目前而言,我对Axon有很好的理解,所以让我分解一下从其角度来看的选择:
命令模型存储:您可以选择按原样存储命令模型,也可以选择通过事件源存储。第一个解决方案(Axon首选将其称为“状态存储方法”)意味着您将拥有命令模型的相对简单的实体格式。另一方面,事件源解决方案强制使用事件存储。从命令模型 查询模型存储: Model Synchronization:Repository
中检索后,将创建命令模型的空实例,并且该实例已发布的所有事件将针对该空版本进行重放。每次您检索命令模型时,都会有效地重新创建它。