Существует столько же мнений о том, как это организовать, сколько существует разработчиков, но мои взгляды таковы:
Контроллеры должны отвечать только за взаимодействие с представлениями.То есть создание экземпляров и заполнение объектов модели, получение данных из ваших бизнес-объектов или уровня доступа к данным, реагирование на любые запросы со страницы (отправка форм, запросы AJAX, интерфейс к динамическим методам / классам создания ресурсов (например, создание CAPTCHA или других динамическихизображения)) и т. д. Если вы придерживаетесь этой философии, их размер и сложность никогда не должны превышать ваши взгляды.
Области Я склонен использовать области, чтобы разбить приложение на под-приложения.Например, сайт может иметь дискуссионный форум, каталог продуктов, информацию о компании, базу данных поддержки и т. Д., Все из которых будут отдельными областями:
/areas/forum/...
/areas/product/...
/areas/company/...
/areas/support/...
Тогда в каждой области вы можете иметь
/areas/support/{views|controllers}
/areas/support/search/
/areas/support/contact/
/areas/support/knowledgebase/
и т. Д.
Как и на сайте веб-форм, где каждая папка представляет отдельную «область» веб-сайта, области предоставляют другой уровень организации, который позволяет вам сохранять связанные контроллеры, представления и т. Д.в общем месте и должны использоваться аналогичным образом.