DDD:如何处理 "view" 个对象
DDD: How to handle "view" objects
如果我们使用 Order 作为聚合根 (AR) 而 OrderLines 作为非根聚合,您如何处理性能问题的情况?
我正在使用 Order/OrderLine,因为它们是我们所有 "Ubiquitous Language" 中足够熟悉的部分。因此,请理解我的 "Order" 在计算上难以存储,更难检索。当不使用 DDD 时,通常将 "de-normalize" 变成 "View"。使用 DDD,是否可以创建一个 OrderView 域对象并使用 Order AR 进行写入,并使用 OrderView AR 进行读取?其他人是如何处理这种情况的?
提前感谢您的任何建议。
我们通过创建简单的数据传输对象来处理这个问题,这些对象由底层 SQL 视图填充到应用程序处理程序中,该视图由我们的底层域实体表中的数据组成。我们发现这非常有效并且没有任何问题。我不会将此称为 CQRS,因为我们对命令和查询使用相同的模型,但也许您可以将其称为 CQRS-lite。我强烈建议您不要在域层中创建视图对象。它没有给你任何实际价值,只会增加一层复杂性。
如果我们使用 Order 作为聚合根 (AR) 而 OrderLines 作为非根聚合,您如何处理性能问题的情况?
我正在使用 Order/OrderLine,因为它们是我们所有 "Ubiquitous Language" 中足够熟悉的部分。因此,请理解我的 "Order" 在计算上难以存储,更难检索。当不使用 DDD 时,通常将 "de-normalize" 变成 "View"。使用 DDD,是否可以创建一个 OrderView 域对象并使用 Order AR 进行写入,并使用 OrderView AR 进行读取?其他人是如何处理这种情况的?
提前感谢您的任何建议。
我们通过创建简单的数据传输对象来处理这个问题,这些对象由底层 SQL 视图填充到应用程序处理程序中,该视图由我们的底层域实体表中的数据组成。我们发现这非常有效并且没有任何问题。我不会将此称为 CQRS,因为我们对命令和查询使用相同的模型,但也许您可以将其称为 CQRS-lite。我强烈建议您不要在域层中创建视图对象。它没有给你任何实际价值,只会增加一层复杂性。