我有一个相当简单的域,大约有7-8个主要实体被识别,这些实体可能是它们自己的聚合根。但是将有一个UI屏幕,它将列出系统中所有对象的联合,这将意味着所有聚合的联合。
我想到的一种方法是使用组合,即所有其他聚合根引用的元数据聚合,这将是一个独立的实体。因此,对于这个屏幕,我可以查询这个聚合,我移动到这个新聚合的字段是需要在我的"All Objects“网格中显示的公共字段。
另一种方法是使用应用程序服务方法,该方法通过查询其他存储库并在应用层合并列表以及处理分页等操作,为“所有对象”屏幕构建必要的列表。
我对第一个解决方案感到不安,因为我可以看到一个影响我的域设计的UI用例,但是db做着处理分页、合并列表等繁重的工作,并且没有通过一个简单的查询收集到的所有这些信息的连接。
第二种解决方案虽然看起来更整洁,但在易用性和性能上有所欠缺。
请给我建议。
发布于 2012-06-13 03:12:39
在这种情况下,我建议使用read-models,它本质上是专门用于读取场景的值对象或DTO。使用read-models是一种保持实体和ARs整洁的模式。至于读取模型是如何创建的,基本上有两种选择。一种是让一个存储库返回满足给定视图要求的单个读取模型。这将允许您利用数据库来提高性能。另一种选择是在应用程序服务级别或表示层的事件中组合来自多个存储库或服务的读取模型。这种方法更具可扩展性,因为数据不必来自相同的数据源。
https://stackoverflow.com/questions/10991656
复制相似问题