我正在开发一组程序集,这些程序集封装了我们域的一部分,将由许多应用程序共享。使用订单管理系统的示例,一个这样的程序集将包含应用程序可以对订单执行/对订单执行的所有核心操作。我们正在应用一个简单版本的 CQS/CQRS,以便所有更改“系统”状态的操作都表示为公共命令,例如 CancelOrderCommand、ShipOrderCommand 和 CreateORderCommand。命令处理程序在程序集内部。
我正在努力回答的问题是如何最好地将读取模型暴露给消费代码?
读取模型将通过使用代码来执行查询。我不知道如何使用读取模型的所有方式,因此接口需要灵活以允许任何查询。
对我来说复杂的是,我不仅需要公开我的聚合根,而且还有几个客户端应用程序可能使用的相关数据的“查找”列表。例如,每个订单都有一个关联的 OrderType,它是数据驱动的(即,不是枚举),并包含几个属性,这些属性将驱动我们的一些业务规则,这些规则控制可以/不可以执行的操作等。在我的内部很容易管理这种关系的模块;但是,允许创建订单的客户端应用程序很可能需要向用户显示可能的 OrderType 列表。因此,我不仅需要从我的读取模型中公开 Order 聚合列表,还需要公开 OrderTypes 的支持列表(和其他查找列表)。
这通常是如何完成的?
我不确定还有什么可以解释这将有助于触发解决方案,所以请询问...