Re[3]: Бизнес-слой управляет другим слоем
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.05.19 20:15
Оценка:
Здравствуйте, es3000, Вы писали:

S>>Есть такой шаблон — многоуровневая архитектура. При его применении да, выделяются слои. Но его же можно и не применять, потому "нужно" — под вопросом.


E>Начну с примера.

E>Лежит красное яблоко, помидор, огурец.
E>Их можно мысленно объединить в группы "фрукты", "овощи", "красные", и т. д.
E>Хотя лежат они вперемешку.

E>Также и с кодом.

Замечательно. Пусть будет "лишний", "не работает", "васин".

E>Физически код может быть и не разделен на слои, то есть код написан "вперемешку".

E>Но логически этот код является частью какого-то слоя, в соответствии с решаемыми задачами.
Т.е. для каждой строчки кода найдется слой или два, в которой она решает некую задачу. А что если строчка кода решает несколько задач? Кто определяет задачи? Напечатать отчет — это задача или нет?

E>Если физическое разделение кода по модулям соответствует логическому, то программа является хорошо спроектированной.

Я привел пример. "лишний", "не работает", "васин". Разнесли по модулям с соответствующими именами. Это хорошо спроектированная программа?
E>И от этого мы получаем много плюсов.
Каких, например?

E>А если физическое разделение кода не соответствует логическому, то программа является плохо спроектированной.

E>И от этого мы имеем много минусов.

E>Так что, многоуровневую архитектуру можно и не применять.


E>Но (я повторяюсь) в любом случае, логически (мысленно) программный код в соответствии с решаемыми задачами можно отнести к какому-то слою.

E>Именно такое логическое разделение я имел ввиду, когда задавал вопрос.
"Такое логическое" разделение мне непонятно. Т.е. я не могу оперировать конкретным слоем БЛ в некотором "таком логическом" разделении...

E>>>При этом получается, что Бизнес-слой — это самый внутренний слой, от которого зависят другие слои.

S>>Как так? Что-то новое в делении на слои.

E>А что не так?

Например, найдется слой, не зависящий от БЛ. Обычно это DAL, но я не знаю, как это устроено в "таком логическом" разделении.

E>>>При этом сам Бизнес-слой получается независимым от других слоев.

S>>

E>Разве нет?


S>>Обычно так и бывает, что BLL управляет DAL.


E>Правильнее сказать: BLL использует DAL, но не управляет.

E>Под управлением я имел ввиду влияние на алгоритмическое поведение.
Не понимаю, что такое влияние на алгоритмическое поведение.

E>Допустим в DAL заложен какой-то алгоритм извлечения данных из БД.

E>Может ли BLL влиять на этот алгоритм?
Конечно.
E>Или вообще подсунуть в DAL свой алгоритм?
Элементарно.

S>>Слои для того и придумали, что бы изолировать слои верхнего уровня от нижнего, т.е. что бы нижние не знали о верхних.

S>>Управление в таком случае осуществляется через инверсию зависимостей, т.е. через интерфейсы, которые доступны в низлежащем слое.

E>Инверсия зависимости скорее предназначена для передачи данных обратно в верхний слой.

Зачем тут инверсия?
E>То есть нижний слой отрабатывает по своему "заложенному" в него алгоритму, а ответ возвращает через инверсию зависимостей.
E>Правильно я понимаю?
Это я уже не понимаю, о чем речь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.