Вы хотите разделить всю свою бизнес-логику и проверку данных в модели. Обычно это включает в себя «группирование» наборов данных и тому подобное или фильтрацию данных по некоторым критериям.
Вы хотите разделить все вызовы этих методов модели в контроллере, ответственность за которые заключается в получении и отправке данных в модель и из нее. Затем контроллер передает соответствующий набор данных в представление.
Помощники - это логика, которая используется представлением для представления логики (не бизнес-логики или проверки), такой как печать меню и т. Д.
Вид - это место, где вы будете использовать помощников (или нет, они не обязаны правильно использовать MVC, но они «помогают»: p) записывать HTML, CSS и JS в браузер. Вы также можете разделить часто используемые модули представления на частичные представления, которые можно включить в несколько представлений.
Вы можете в дальнейшем разделять вещи в ViewModel, но тогда вы выходите за пределы "строгого" MVC. В этом случае вы должны использовать ViewModel, чтобы помочь представлению взаимодействовать с моделью - в основном ViewModel - это модульный контроллер. В этом случае контроллер будет делать гораздо меньше, чем то, что он уже делает.
Однако для веб-приложений это, как правило, излишне. Поскольку веб-приложения имеют единый поток выполнения (запрос), разделение элементов на ViewModel становится ненужным. Однако в коде GUI ViewModel становится намного более полезным (поскольку GUI имеет гораздо больше, чем один поток выполнения).
Вы всегда хотите разделить бизнес-логику на Модель, точка. Помните, что вы не должны связывать свой контроллер с вашей моделью - так что вы можете использовать свою модель в другом месте на других контроллерах или даже представить ее как веб-сервис.
Надеюсь, это поможет
:)