我使用DDD原则为新项目创建了基础架构。我有一些存储库,用于为域中的工厂/水槽供应。应用程序层在请求时充当外观,交叉域模型以用于各种视图/编辑模型。
编辑模型被映射并合并回域模型,由使用流畅验证的serice验证。记录任何错误并通过错误服务将其报告给用户。
这一切都很完美。我现在关心的是如何最好地生成这些域对象的列表。
我想到了一些选择:
1)水合完整域模型,然后将这些模型展平为列表。域模型可以缓存为IEnumerable列表。然后将此集合展平并推送到请求视图。
2)创建一个“投影”对象,它是域模型的轻量级表示。这需要很少甚至不需要保湿,并且可以通过域级别进行拉取并映射到viewModel并显示。
3)“绕过”域并从应用层调用生成IEnumerable的服务。这将使域名保持清洁。
我担心解决方案1会因为显示域项列表而变重。虽然它们会被攻击,但由于域名的可搜索性质,没有任何保证缓存可以做很多好事。
对于什么是最佳选择的任何建议将不胜感激。
答案 0 :(得分:0)
我更喜欢解决方案2.保持域模型清洁是必要的。
通过CQS(Command Query Separated),我们可以实现一个有效而轻量级的查询架构。