Каковы отношения между Управляемым доменом дизайном (DDD) и "Луковой Архитектурой" Jeffrey Palermo?
На мой взгляд - они дополняют друг друга, но с очень разных точек зрения.
Луковая архитектура - это сделать домен / бизнес-логику независимой от «второстепенных» вещей, таких как доступ к данным, пользовательский интерфейс, службы и т. Д. Луковой архитектуре на самом деле не важно, как вы создали домен, который у вас есть - она непреклонна в отношении его защиты. от внешних зависимостей.
Домен-ориентированный дизайн - это то, как вы моделируете свой домен и то, что вы называете своими объектами. Это означает, что каждый класс домена должен иметь прямое отношение к тому, что он представляет в бизнес-домене, к которому он обращается (т. Е. Физический / реальный мир). Таким образом, объект Customer должен называться Customer в коде - он должен иметь те же правила, что и Customer в реальном мире (или насколько это возможно).
Если вы посмотрите на изображение, описывающее луковичную архитектуру в предоставленной вами ссылке, то DDD фокусируется на слое Domain Model .
Onion - это архитектурный шаблон для системы, тогда как DDD - это способ спроектировать подмножество объектов в системе. Эти двое могут существовать друг без друга, поэтому ни один из них не является подмножеством другого. Если бы вы использовали их вместе - тогда в целом часть, разработанная с использованием DDD, была бы подмножеством всей системы.
Используя (вероятно, плохую) аналогию: лук - это образец для проектирования дома, а DDD - это способ фрезерования древесины, которая является частью дома.