В чем отличие разработки веб-сайта в MVC и 3-уровневой или N-уровневой архитектуре?
Какая из них лучше? Каковы плюсы и минусы?
Они почти одинаковы, однако в 3-уровневом, верхний уровень (презентация) никогда напрямую не связывается с нижним уровнем (постоянством данных).
В модели-виде-контроллере теоретически модель должна «уведомлять» вид, который он изменил, чтобы View мог обновлять. Однако это обычно не проблема в большинстве веб-приложений, поскольку они не имеют гражданства. Я не уверен, что в каких-либо известных PHP MVC-архитектурах есть Views, которые напрямую взаимодействуют с моделями или наоборот, но если они этого не делают, было бы правильно сказать, что они фактически являются 3-уровнями.
Википедия говорит:
На первый взгляд, три уровня могут показаться похожими на концепцию MVC (Model View Controller); однако топологически они разные. Основополагающим правилом в трехуровневой архитектуре является то, что клиентский уровень никогда не связывается напрямую с уровнем данных; в трехуровневой модели все коммуникации должны проходить через уровень промежуточного уровня. Концептуально трехуровневая архитектура линейна. Тем не менее, архитектура MVC является треугольной: View отправляет обновления контроллеру, контроллер обновляет модель, и представление обновляется непосредственно из модели.
Источник: Википедия: многоуровневая архитектура