Я создал инфраструктуру для нового проекта, используя принципы DDD. У меня есть репозитории, которые питают фабрики / гидраторы в домене. Прикладной уровень действует как фасад, расширяя доменные модели для различных моделей просмотра / редактирования по запросу.
Редактировать модели отображаются и объединяются обратно в модель предметной области, которая проверяется серией с использованием быстрой проверки. Любые ошибки регистрируются и возвращаются пользователю через службу ошибок.
Это все работает отлично. Теперь меня интересует, как лучше составить списки этих доменных объектов.
На ум приходит несколько вариантов:
1) Гидратируйте полные доменные модели, а затем сведите их в список. Модели предметной области могут быть кэшированы в виде списка IEnumerable. Затем эта коллекция выравнивается и выталкивается в запрашивающее представление.
2) Создайте «проекционный» объект, который является упрощенным представлением модели предметной области. Это потребует практически никакого увлажнения и может быть проведено через уровень домена и сопоставлено с моделью представления и отображено.
3) «обойти» домен и вызвать службу, вызываемую из прикладного уровня, которая генерирует IEnumerable. Это оставило бы домен чистым.
Я волнуюсь, что решение 1 было бы тяжелым для отображения списка элементов домена. Несмотря на то, что они будут исправлены, из-за возможности поиска в домене, нет никакой гарантии, что кеш принесет много пользы.
Буду признателен за любые советы о том, что будет лучшим вариантом.