Рубрика: Архитектура ПО

Строительные блоки DDD

Проектирование на основе предметной области принято делить на две части — стратегическое и тактическое. Хотя они идут бок о бок и одна без другой не существует, так же как и не бывает одной стороны монеты без другой. В данной статье мы вкратце рассмотрим основные строительные блоки 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 ?

В данной заметке будут собираться интересные материалы по разработке и архитектуре ПО.

(далее…)