Model - данные и бизнес-логика (домен, репозитории, сервисы). View - представление (шаблоны, отображение). Controller - принимает запрос, вызывает модель, выбирает view и отдает ответ.
Контроллер не должен содержать бизнес-логику - только оркестрацию. Толстая модель, тонкий контроллер. В вебе: Front Controller (один entry point) + роутинг к конкретному контроллеру.