Я плохо знаком с DDD и думаю об использовании этого метода проектирования в моем проекте.
Однако то, что ударяет меня о DDD, является этим, насколько основной идея. В отличие от других методов проектирования, таких как MVC и TDD, это не делает, кажется, содержит любые новаторские идеи.
Например, я уверен, что у некоторых из Вас будет то же чувство, что идея корня агрегируется, и репозитории не являются ничем нового, потому что то, когда Вы, писало веб-приложения MVC, у Вас должен быть один единственный объект шаблона (т.е. корневой агрегат), которые содержат другие незначительные объекты (т.е. оцените объекты и объекты) в образцовом слое для отправки данных в представление со строгим контролем типов.
Мне единственная новая идея в DDD, вероятно,
Кто-либо может сказать мне, если я пропустил что-нибудь здесь? Если это - все, которое существует к DDD, если я обновляю одно из своего существующего приложения MVC с вышеупомянутыми 2 новыми идеями, я могу утверждать, что это - TDD, MVC и DDD applcation?
Короткий ответ заключается в том, что не то, как выглядит ваш код, квалифицирует его как проект DDD, а то, как вы пришли к этому коду. Теперь о длинной версии...
Вы абсолютно правы, что в методах кодирования DDD нет ничего очень революционного, но вы, похоже, немного не в курсе своего вопроса. Распространенная ошибка, которую многие разработчики совершают с DDD, заключается в том, что они слишком много внимания уделяют методам кодирования, игнорируя некоторые из более фундаментальных концепций DDD. По своей сути DDD — это практика итеративной разработки модели в тесном сотрудничестве между разработчиками и экспертами в области. Вы можете закодировать все сервисы, сущности и объекты ценностей, которые вы хотите, но если вы не вовлекаете экспертов в этот процесс или не улучшаете модель в итерациях, то, честно говоря, вы не практикуете DDD. Даже с точки зрения кодирования многие рассматривают концепции совокупных корней, ограниченных контекстов и анти-коррупционные слои должны быть более ценными инструментами, чем базовые шаблоны.
Вы не одиноки в том, как вы воспринимаете DDD. Я обнаружил, что почти все разработчики проходят стадию DDD, когда они пытаются реализовать примеры приложений с использованием сущностей, ценностных объектов и сервисов, игнорируя при этом все другие практики, которые являются фундаментальными для DDD. DDD — это процесс, предназначенный для обработки сложной бизнес-логики, поэтому оценка его достоинств на примере приложения, разработанного в выходные дни, не дает вам лучшего, что может предложить DDD. Я призываю вас продолжать глубже смотреть на DDD, поскольку я считаю его нераздеяемым инструментом, но никогда не забывайте, что это гораздо больше, чем язык шаблонов.
DDD на самом деле не контрольный список - это методология.
В дополнение к ответу Stefans, я бы предложил следующее (в порядке важности):
Затем есть все остальные вещи!
Я думаю, что большинство практиков DDD хотели бы сказать:
"Я работаю с экспертами домена, чтобы понять их потребности, и пишу системы, которые (а) соответствуют бизнес-терминам и процессам, (б) помогают другим разработчикам понять бизнес-сферу, и (в) могут адаптироваться к изменяющимся бизнес-требованиям. "
Надеюсь, это поможет!