Иногда программный проект переписывается дважды, а второй раз все еще не работает. Фактически, с использованием метода проектирования DDD, наша фаза проектирования стала очень легкой и гибкой. Пока разработчик может нарисовать и описать взаимосвязь между моделями предметной области и достичь соглашения с требовательным персоналом, Что выходит в основном надежно. IBookStoreDao – это объект доступа к данным, который может вызываться BS для сохранения объектов или на него могут ссылаться объекты домена для сохранения самого себя. Чтобы лучше понять дизайн, основанный на предметной области, мы реализовали простую систему онлайн-магазина, основанную на вышеуказанных методах проектирования.

доменно-ориентированный дизайн

На протяжении многих итераций поддерживать хорошее разделение задач и должным образом разделять классы и модули становится сложнее, если не соблюдаются строгие архитектурные рекомендации. Люди в других командах не очень хорошо осведомлены о границах контекста и будут бессознательно вносить изменения, которые стирают границы или усложняют взаимосвязи. Когда необходимо установить связи между разными контекстами, они, как правило, перетекают друг в друга.

Доменно-ориентированный Дизайн

Подчеркните ценность эффективного общения и сотрудничества для обеспечения успешного внедрения DDD. Примечание – Область в области разработки программного обеспечения – это бизнес, на котором предполагается построить приложение. Сохраняемость реализуется объектами доступа к данным (DAO), не имеет отношения к бизнес-логике и в основном отвечает за сохраняемость классов сущностей.

доменно-ориентированный дизайн

Уровень управления, уровень домена и уровень сохраняемости элементов системы управляются контейнером IOC для достижения полного разделения и разъединения интерфейсов. В то же время на службу журнала можно ссылаться на уровнях управления, домена и сохраняемости. Далее в основном рассказывается о нашей практике и расширении DDD при создании платформы разработки приложений корпоративного уровня. Расположение DDD в процессе разработки программного обеспечения показано на рисунке ниже.Реализация DDD неотделима от кэширования в памяти, CQRS, DCI, EDA или источника событий. Например, наименование вещей всегда было одной из самых сложных задач, с которыми сталкиваются разработчики программного обеспечения.

Концепции

Их атрибуты могут видоизменяться, а их жизненные циклы могут резко измениться, но их идентичность сохраняется. Идентичность поддерживается с помощью уникального ключа или комбинации атрибутов, которые гарантированно являются уникальными. Восходящий поток поставляет нижестоящий сервис, а нижестоящий контекст действует как заказчик, определяя требования и запрашивая изменения выше по потоку для удовлетворения своих потребностей. Domain-Driven Design (DDD) пытается решить эти проблемы, согласовывая технические и нетехнические силы, которые сталкиваются в программном проекте, и предлагая набор практик и шаблонов, которые облегчают построение успешной системы. В идеале, было бы предпочтительнее иметь единую унифицированную модель. Хотя это благородная цель, на самом деле она обычно распадается на несколько моделей.

Если рассматривать игру как случай, игра имеет деловые поведения, такие как «начало» и «конец», но традиционный и классический способ – поместить поведение «начало» и «конец» в служебную службу игры, а чем на самом объекте соревнования в. Часть кода, написанная специально для решения проблем предметной области, является частью всей кодовой базы. Если эта часть переплетается с кодом, который решает другие проблемы, ее будет сложно понять и улучшить. Четкое разделение логики предметной области от всех остальных функций уменьшит утечку и позволит избежать путаницы в большой и сложной системе. Factory должен иметь возможность создавать объекты домена или агрегаты за одну атомарную операцию, требуя, чтобы все данные, необходимые для предоставления клиентом при вызове, и принудительно применять все инварианты для созданного объекта. Это действие не является частью модели домена, но по-прежнему относится к уровню домена, поскольку является частью бизнес-правил, применимых к системе.

  • Хотя они сами по себе не реализуют бизнес-функциональные возможности, они по-прежнему являются частью модели предметной области, поскольку обеспечивают важные функциональные возможности для жизненного цикла бизнес-объектов.
  • Модель предметной области соответствует уровню предметной области, разделенному на предметно-ориентированный дизайн, который здесь подробно не обсуждается.
  • Таким образом, модель предметной области и модель предметной области Отношения между ними станут простыми.
  • Это просто стиль, а не стандарт, поэтому нет единого стандарта для стандартизации этих конструкций.
  • Поскольку всегда будет какая-то бизнес-логика, которая не принадлежит ни этому объекту домена, ни тому, кто будет заниматься этой частью бизнеса?

Более того, вы можете использовать масштабируемость, удобство обслуживания и гибкость платформы, чтобы постоянно адаптировать свое приложение по мере развития вашей предметной области и изменения требований. Решением этой проблемы является архитектура CQRS, различные кеши и Nosql на стороне запросов, а также использование поисковой системы, чтобы ваше программное обеспечение летало. Эта архитектура разделяет операции с базой данных, у вас практически нет возможности иметь дело с базой данных, а также решает проблему производительности хранения данных.

Контекстная Карта

Бизнес-логика и объекты предметной области становятся носителями данных только с методами получения и установки. Этот подход также приведет к тому, что бизнес-логика и правила, зависящие от предметной области, будут распределены по нескольким классам служб, а в некоторых случаях будет дублироваться логика. Мы видели более 5000 строк класса Service, сотни методов, код практически нечитаемый. При проектировании на основе предметной области вы должны сначала спроектировать модель предметной области, а затем написать логику предметной области.

доменно-ориентированный дизайн

Например, в сценарии, в котором администратор обрабатывает заказ, сначала необходимо получить учетную запись в соответствии с информацией о заказе, определить ставку скидки в соответствии с информацией об учетной записи и выполнить проверку баланса. Если проверка пройдена, для обработки заказа будет вызван метод удаления объекта заказа. Такая бизнес-логика, включающая Заказ, Счет, Скидку и другие объекты, должна быть реализована БС.

Ограниченные контексты являются фундаментальной концепцией в DDD, поскольку они изолируют различные части модели предметной области и предотвращают несогласованность. Игнорирование или пренебрежение правильным использованием ограниченных контекстов может привести к нежелательной связи, неоднозначным границам доменов и трудностям в управлении сложностью системы. Приложите усилия для определения и поддержания четких границ и понимания отношений между ограниченными контекстами. Каждый процесс обрабатывает отдельный запрос от уровня представления. Большинство бизнес-приложений можно рассматривать как серию транзакций.В некоторой степени обработка бизнеса с помощью сценариев транзакций похожа на выполнение инструкции Sql для обработки информации базы данных. Сценарий транзакции объединяет бизнес-логику в единый процесс, в котором база данных вызывается напрямую, а бизнес-логика обрабатывается на уровне сервиса.

Обратите внимание на инкапсуляцию в объектно-ориентированном программировании и проектируйте классы с низкой связью и высокой связностью. Для программного проекта недостаточно domain driven design что это полагаться только на дизайн классов. Нам нужно спроектировать тесно связанный бизнес как модель предметной области и скрыть некоторые детали внутри модели предметной области.