2016-05-18 2 views
2

Я изучаю DDD и вижу много кода, чтобы иметь возможность создавать новую api в моей текущей работе.DDD, AutoMapper и заводы

Давайте предположим следующую многоуровневую архитектуру:

  1. Апи
  2. Услуги приложений (ViewModel здесь)
  3. домена (служба домена и домена модели здесь)
  4. Infra

Application Service использует Automapper для создания модели объектадомена, и передает его в Service Layerдомена. Это верно?

Если у меня уже есть модель объекта домена готов к использованию там, почему я должен использовать Factory? Неужели я ошибаюсь, игнорируя фабрики?

Так как я использую Automapper для отображения вид модели объектов для модели предметной области объекты, где фабрика появляется делает? У меня такое ощущение, что я здесь что-то не хватает.

+0

Я считаю, что этот вопрос является хорошим кандидатом для http://programmers.stackexchange.com. –

+0

Спасибо, Ray, я спрошу его там. – Felipe

ответ

7

Служба приложений использует Automapper для создания объекта модели домена и передает его на уровень службы домена. Это верно?

Нет. Вот как вы пишете систему CRUD. Объект домена должен защищать свое собственное состояние, и все изменения на объекте домена должны быть сделаны через методы.

Что-то вроде:

var user = repos.Get(userId); 
user.ActivateAccount(); 
repos.Update(user); 

Таким образом, прикладные услуги должны быть смоделированы вокруг действий, а не просто пройти по DTOS, которые выглядят так же, как субъекты домена.

, используя ваш пример, как я могу передать нового пользователя? Должен ли я использовать AutoMapper для отображения на DTO пользователь, и в моем домене слое называют завода

Я бы создать утра пользователя DTO, который будет содержать подмножество информации в пользователе домена сущности, только ту информацию, которая требуется для успешного создания пользователя.

В службе приложений вы можете использовать завод для создания объекта, а затем заполнить его информацией из DTO. Я лично создавал бы объект без фабрики, но предоставлял бы обязательную информацию в конструкторе пользователя.

+1

Метод должен быть на объекте домена, который, конечно, действует как совокупный корень. – VoiceOfUnreason

+0

Спасибо @jgauffin, используя ваш пример, как я могу передать нового пользователя? Должен ли я использовать AutoMapper для сопоставления с пользователем DTO, а на моем доменном слое - фабрику? – Felipe

+0

прочитал мое обновление. – jgauffin

Смежные вопросы