предисловие
Вскоре после того, как я недавно присоединился к Ali, я обнаружил, что большинство внутренних проектов было разработано с помощью DDD. Поскольку раньше у меня не было большого контакта с ним, я нашел время, чтобы изучить его. В этот период я также читал статьи старший брат Дафей. Сегодня, в первый день нового года, я кратко расскажу о своем изучении и распространении DDD.
1. Что такое ДДД
DDD: Полное название доменно-ориентированного проектирования определяет доменное проектирование.
Дизайн домена приводаПо сути, это метод разработки программного обеспечения, который удовлетворяет сложные требования, связывая реализации с постоянно развивающейся моделью. Тем не менее, это может звучать расплывчато. На самом деле, проще говоря:Это решить сложность бизнеса.
1.1 Предпосылки для использования:
Поскольку он предназначен для решения сложности бизнеса, он должен использоваться только сложным бизнесом, поэтому DDD также должен иметь определенные предпосылки для использования.
-
Сосредоточьте основное внимание проекта на основной области и логике предметной области.
-
Размещайте сложные дизайны на моделях с ограниченным контекстом
-
Инициировать творческое сотрудничество между техническими экспертами и экспертами в предметной области для итеративного уточнения концептуальных моделей для решения проблем, специфичных для предметной области.
Дизайн, управляемый доменом, — этодоменная модельДля управления проектированием системы, а не для управления проектированием системы путем хранения словаря данных (поля таблицы БД, поля ES, Mapper и т. д.).Модель предметной области — это абстракция бизнес-модели, а DDD — это способ перевести бизнес-модель в дизайн системной архитектуры.
1.2DDD трехуровневая архитектура:
-
API: Уровень API используется для внешней упаковки и вызовов внешнего интерфейса. Уровень домена — это вся модель домена. Его нельзя напрямую упаковать в maven для использования другими, а также нельзя использовать напрямую в качестве интерфейса для внешнего интерфейса. Некоторые требуют, чтобы уровень API вызывал домен после преобразования и упаковывал и отфильтруйте данные, возвращаемые вызовом домена. Вернитесь снова.
-
Domain: базовый уровень системы, вся конкретная обработка бизнес-логики, обработка событий и т. д. обрабатываются на этом уровне модели предметной области.
-
Repository: Уровень прокси источника данных. Уровень репозитория похож на прокси-шлюз. Сам он не имеет данных. Доступ к данным осуществляется слоем домена через его прокси. Источником данных прокси может быть не только БД, ES, но и HTTP, RPC, любой. Взаимодействие данных со слоем домена называется репозиторием.
1.3 Бизнес-понимание
Теперь, когда вы понимаете DDD, также знаете предпосылки его использования, а затем для бизнес-системы разделение модели предметной области проектирования и моделирования того, как DDD, является наиболее важным.
Только полностью понимая бизнес и разбираясь во всех его деталях, бизнес-модель может быть эффективно преобразована в модель предметной области.
Позвольте мне взять систему электронной коммерции в качестве примера для проведения простого полевого анализа.
Система электронной коммерции является наиболее распространенной в нашей жизни. Товары, заказы, транзакции, дистрибуция и т. д. — каждая подсистема чрезвычайно сложна.
Например: я беру в качестве примера товар с Taobao. Из графика можно получить много информации:
- Изображение продукта, название продукта, цена продукта
- Товарная деятельность
- Стоимость доставки, информация о доставке и многое другое
Разберитесь с бизнесом:В процессе разбора бизнеса будет указана каждая конкретная точка бизнеса. Абстрагируя понимание бизнеса, связанные бизнес-точки группируются и агрегируются. Участие в процессе бизнес-абстракциипограничное делениеТакие вопросы, как информация о ценах на сырьевые товары и информация о ценах на сырьевые товары, объединены и реферированы в базовую информацию о сырьевых товарах, или же они реферированы в базовую информацию о сырьевых товарах и маркетинговую информацию о сырьевых товарах? В товарном бизнесе товар может участвовать в нескольких видах деятельности, и все маркетинговые действия в рамках товара представляют собой одну и ту же базовую информацию о товаре, но информация о каждом маркетинговом мероприятии товара может быть разной (это может быть бесплатная доставка или полная xx минус xx), в товарном бизнесе базовая информация о товаре и маркетинговая информация о товаре должны быть разделены на два независимых бизнес-модуля.
Преобразование модели:Когда мы разобрались с бизнесом и сделали простое разделение бизнес-модели, мы можем преобразовать бизнес-модель в модель предметной области посредством простого преобразования.
Во-вторых, что такое кола?
COLA - это каркас с открытым исходным кодом Alibaba, что можно сказать, что является реализацией DDD.
Он выступает за использование бизнеса в качестве ядра, отделение внешних зависимостей и разделение сложности бизнеса и технической сложности.
Чтобы помочь прикладной системе «от хаоса к порядку», для этой цели была создана архитектура COLA.Основная обязанность состоит в том, чтобы определить хорошую структуру приложения и предоставить лучшие практики.
2.1cola иерархическая структура:
-
Уровень адаптера: Отвечает за маршрутизацию и адаптацию интерфейсного дисплея (веб, беспроводная сеть, wap), для традиционных систем B/S адаптер эквивалентен контроллеру в MVC;
-
Прикладной уровень: в основном отвечает за получение входных данных, сборку контекста, проверку параметров, вызов уровня домена для бизнес-обработки и отправку уведомлений о сообщениях, если это необходимо. Уровень является открытым, и прикладной уровень также может обходить уровень предметной области и напрямую обращаться к базовому уровню реализации;
-
Слой домена: в основном инкапсулирует основную бизнес-логику и предоставляет бизнес-сущности и расчеты бизнес-логики на уровне приложения с помощью методов доменной службы и доменной сущности. Домен является ядром приложения и не зависит ни от каких других уровней;
-
Уровень инфраструктуры: В основном отвечает за обработку технических деталей, таких как база данных CRUD, поисковая система, файловая система, RPC распределенных сервисов и т. д. Кроме того, сюда также относится важная задача защиты домена от внешних зависимостей, прежде чем они смогут быть использованы уровнем приложения и уровнем домена выше.
Структура субподряда 2.2cola:
структура колы4.0:
- Архитектура COLA. Сосредоточьтесь на определении и построении архитектуры приложений для повышения качества приложений.
- Компоненты COLA: предоставьте повторно используемые компоненты, необходимые для разработки приложений, чтобы повысить эффективность исследований и разработок.
2.3 Быстрое употребление колы
Адрес открытого исходного кода COLA:GitHub.com/Alibaba/col…
В-третьих, думая о DDD
На самом деле не существует абсолютно правильного или неправильного проектирования модели предметной области. Пока это модель предметной области, наиболее подходящая для вашей бизнес-системы, она является лучшей. Сам я тоже нахожусь в процессе изучения DDD, постоянно думаю о том, как спроектировать, если он мой.
Как и система электронной коммерции, это может быть «горизонтальный DDD».
Также может быть "вертикальным DDD"
Эта статья является частью моего собственного обучения и понимания.Если что-то не так, вы можете исправить это и вместе добиться прогресса.