2013-09-09 3 views
0

Итак, у меня есть служба WCF, которая принимает команды и отображает их на вызовы на уровень служб домена. При написании типа команд в домене этот шаблон почти идеален.DDD Fetching List of Roots

Мне интересно, как все читают, а точнее получая списки агрегатов из модели для отображения. Как я уже сказал, у меня есть служба WCF, которая вызывает уровень сервиса. В настоящее время у меня есть метод на моем сервисе, который возвращает список совокупных корней. Так или иначе, это немного грязно. Я загрязняю свои службы домена методами GetByXXXX.

Я ищу небольшое руководство по поиску и извлечению объектов домена через уровень сервисов приложений.

Edit:

мышление и чтение немного больше, это целесообразно непосредственно использовать хранилище на уровне приложений для обработки выборки сущностей?

+1

Я использую репозитории в прикладном уровне. Некоторый отрыв работы должен выполняться при обращении с ленивой загрузкой. Если у вас есть множество конкретных методов запросов, вы можете вместо этого определить объект критериев. – Hippoom

+1

Да, хранилище является естественным местом для поисковых методов. Не нужно создавать еще один уровень сложности (репозиторий app-> service-> вместо app-> repository). Широко используемый шаблон «Relaxed layered system» позволяет использовать все слои под соответствующим слоем. Таким образом, вы также можете использовать репозиторий внутри своего уровня представления. – gseric

ответ

0

Обычно я использую простой слой запроса, который возвращает DataTable для коллекций и DataRow за 1 товар. Для чего-то более структурированного я бы использовал DTO. Таким образом, все ваши методы GetByXXX могут сидеть в слое запросов.

+0

Таблицы данных слишком тяжелы для возврата через сетевую услугу. Они содержат метаданные базы данных. Даже работая с DataTables без сетевой службы, они будут тесно связывать вас с структурой данных. Плохие вещи для корпоративного типа приложения. – Darthg8r

+0

Мой ответ на самом деле связан с перемещением вашего GetByXXX из ваших репозиториев. С WCF в любом случае у вас будут контракты с данными, поэтому вам потребуется некоторое сопоставление на уровне интеграции. –