我使用DDD原则创建了一个新项目的基础架构。我有存储库,它们为域中的工厂/水合生成器提供数据。应用程序层充当外观,当请求时将域模型变为各种视图/编辑模型。
编辑模型被映射并合并回到域模型,由一个使用流畅验证的服务进行验证。任何错误都会记录并通过错误服务报告给用户。
这一切都很完美。我的担心是如何最好地生成这些域对象的列表。
有几个选择:
1)填充完整的域模型,然后将其展平为列表。域模型可以缓存为IEnumerable列表。然后将此集合展平并推送到请求的视图。
2)创建一个“投影”对象,它是域模型的轻量级表示。这将需要很少或根本不需要填充,可以通过域级别进行拉取并映射到ViewModel并显示。
3)“绕过”域,并从应用程序层调用服务生成IEnumerable。这将使域保持干净。
我担心解决方案1会重复显示域项的列表。虽然它们将被缓存,但由于域的可搜索性质,不能保证缓存会有多大好处。
欢迎提出哪种选项是最佳的建议。
编辑模型被映射并合并回到域模型,由一个使用流畅验证的服务进行验证。任何错误都会记录并通过错误服务报告给用户。
这一切都很完美。我的担心是如何最好地生成这些域对象的列表。
有几个选择:
1)填充完整的域模型,然后将其展平为列表。域模型可以缓存为IEnumerable列表。然后将此集合展平并推送到请求的视图。
2)创建一个“投影”对象,它是域模型的轻量级表示。这将需要很少或根本不需要填充,可以通过域级别进行拉取并映射到ViewModel并显示。
3)“绕过”域,并从应用程序层调用服务生成IEnumerable。这将使域保持干净。
我担心解决方案1会重复显示域项的列表。虽然它们将被缓存,但由于域的可搜索性质,不能保证缓存会有多大好处。
欢迎提出哪种选项是最佳的建议。