@DollyPapper
В классической трёх звёнке, структура линейна, BLL и PL никогда между собой на прямую не общаются. Я тоже самое думаю про MVC. Возьмем например Yii2 и как я обычно пишу. View отрпавляет запрос, его обрабатывает контроллер, который дерагет методы в модели, та что-то готовит, отдает результат контроллеру, а тот рендерит новую view через render или еще каким то образом, например через rest запросы отдает данные в клиент, то есть обновляет view. И тут я для себя отличий не вижу между MVC и three tier. Однако я пошел на SO искать эти различия и услышал такую вещь
The main difference between both is:
A three tier architecture is the client tier never communicates directly with the data tier In a Three-tier model all communication must pass through the middle tier
MVC architecture is triangular: the view sends updates to the controller, the controller updates the model, and the view gets updated directly from the model
И действительно, если посмотреть на диаграмму в той же википедии
От модели мы видим стрелку с Update которая идет во View. То есть например всё с тем же примером из Yii, чтобы было конкретней, метод render нужно вызывать в модели, чтобы следовать паттерну MVC?
UPD: как я сейчас себе вижу MVC (хотя это может быть гибрид между 3 тир и MVC)
Решения вопроса 0
Ответы на вопрос 2
@insighter
MVC — это паттерн программирования для разделения данных и визуального представление этих данных.
Трехзвенка, если очень упрощенно означает, что работа с данными идет не напрямую с сервером СУБД, а через некоторый промежуточный слой, который чаще всего вводит свои абстракции.
@bingo347
Model (бизнес модель, то как бизнес правила отражены в коде, собственно это и есть логика) действительно совпадает по своей сути со слоем логики.
Слой данных не выражен в MVC, но он полезен, ибо действительно не надо смешивать домен с деталями, а работа с данными (БД, файлы, внешние API) — это детали, которые более подвержены изменениям во времени чем бизнес правила. А значит отделив этот слой мы инвестируем время в будущее, упростив поддержку ПО в будущем.