0

Я работаю над проектом, который разработал базу для разработки Driven Driven.Какой уровень отвечает за бизнес-логику?

В этом проекте, мы имеем 5 слоев:

  1. Инфраструктура
  2. домена
  3. Application Service
  4. Распределенная Служба
  5. Презентация

Я смущен о том, как поместить мою бизнес-логику в Инфраструктуру, D omain и Service. Иногда я устанавливаю условие бизнес-логики в iqueryable Linq в репозитории; иногда я загружаю все объекты в память и помещаю их в службы; и иногда я помещаю их в метод объекта. Я не знаю, каким образом это правильный путь. Какой слой должен отвечать за эту бизнес-логику?

Мне нужны некоторые конкретные причины, чтобы убедить команду разработчиков, что бизнес-логика в коде лучше, потому что она более удобна в обслуживании. Раньше у меня было много бизнес-логики в БД, потому что я считал, что это единственная точка доступа.

+0

Предлагаю вам больше узнать о DDD, ответ окажется очевидным. Если речь идет о фильтрации объектов в репозитории, вы можете проверить шаблон спецификации: https://berther.io/2005/03/25/the-specification-pattern-a-primer – guillaume31

ответ

1

Сохраненная процедура полезна для ускорения определенных операций с БД. хранимой процедуры являются злом, потому что:

  • это трудно версионности (не самая трудная вещь, но сложнее, чем управление версиями проекта)
  • это труднее развернуть (например, в своей работе мы имеем тысячи ОБН с тысячами хранимой процедуры на нескольких серверах, когда мы изменяем логику СП мы должны обновить каждую БД: боль в области шеи)
  • это трудно отлаживать,
  • трудно модульного теста
  • .

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

Единственное, что мы можем подтвердить прямо сейчас: Бизнес-логика, предназначенная как логика домена, принадлежит доменной модели/доменному слою. Логика домена - это правила, которые действуют точно так же, как и в случае использования (например: если заказ более дорогой, чем 100 долларов США, отправка бесплатна). Если у вас есть правило, зависящее от используемого варианта (например: если пользователь просматривает мою электронную коммерцию с помощью appmobile, чем ...), это логика приложения.

0

DDD также следует правилу «разделение проблем», так что бизнес вокруг домена остается в доменном слое, и если что-то вне домена зависит, мы помещаем их в более высокие уровни, такие как представления модели в уровне представления.