2013-04-29 2 views
2

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

Чтобы предоставить некоторый контекст (упрощенный сценарий) - в нашем домене есть компьютерный объект, на котором вы можете запускать процессы, наш уровень интеграции фактически делегирует его удаленному физическому компьютеру и запускает там процесс.

Итак, должно ли StartProcess быть объектом Computer? Или он должен быть включен в доменную службу, так как он напрямую не влияет на состояние объекта Computer? (он косвенно изменяет состояние, как только процесс завершен, и данные синхронизируются обратно в нашу систему).

Мне сущность естественным местом для нее, поскольку она следует вездесущему языку, но мне интересно, есть ли у кого-то веские причины против (или других причин).

ответ

2

IMO поведение объекта не требует изменения состояния, но по крайней мере должно излучать событие. В этом случае событие будет чем-то вроде ProcessStarted. Представления CQRS/event-sourcing объединяются в основном как обработчики команд - они обрабатывают команды и генерируют события. Государство становится явным, когда требуется для поведения или когда оно денормализуется для запросов.

+0

Я хочу просто упомянуть, что, хотя архитектура, управляемая сообщениями, и CQRS подходят так хорошо DDD, они не требуются – MikeSW

+0

Правда, хотя использование событий домена не означает CQRS/ES. Я должен был быть более ясным. – eulerfx

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