Проектирование на основе предметной области принято делить на две части — стратегическое и тактическое. Хотя они идут бок о бок и одна без другой не существует, так же как и не бывает одной стороны монеты без другой. В данной статье мы вкратце рассмотрим основные строительные блоки DDD с упором на практическую (тактическую) часть.
(далее…)Рубрика: Архитектура ПО
Active Record vs Data Mapper
Обзор и сравнение двух популярных шаблонов.
(далее…)Transaction Script VS Domain Model
Основное различие этих двух архитектурных подходов состоит в назначении модели (наборе доменных сущностей). Доменная сущность в Transaction Script является практически полным отображением таблицы в базе данных с геттерами и сеттерами, а весь функционал (поведение) объекта вынесено в сервисы. За соблюдение инвариантов отвечает сервис. Таким образом, Transaction Script формирует анемичную модель. В противовес этому подходу Domain Model подразумевает наличие у сущности (доменного объекта) не только данных, но и собственного поведения, которое используется в сервисах или агрегатах. Инвариантами в данном случае заведует модель.
Само по себе понятие инвариант означает что-то постоянное. В случае с DDD инвариантом можно назвать бизнес-правила которые должна жестко соблюдать модель. Например, все пользователи получающие жалобы в какой-нибудь из социальных сетей падают в рейтинге на N-е количество пунктов или при оформлении заказа более 1 000 рублей клиент получает скидку в 5%.
Какое решение выбрать для проекта — дело архитектора. Для проектов с малым количеством бизнес-логики (большинство веб-проектов как раз такие), обычно, выгоднее использовать подход Transaction Script, а для большого бизнес-слоя предпочтительнее выбрать Domain Model.
Что почитать по архитектуре ПО и DDD ?
В данной заметке будут собираться интересные материалы по разработке и архитектуре ПО.
(далее…)