MVC3 Когда использовать области? - PullRequest
22 голосов
/ 01 сентября 2011

Я работаю над гибким проектом MVC3, и он начинает становиться довольно большим, в частности, мой раздел управления, где пользователь может установить множество конфигураций и т. Д. Это мой первый проект MVC3, поэтому я простоЛюбопытно, когда имеет смысл использовать районы?

Например, насколько большим должен быть контроллер для определенного раздела, такого как управление, прежде чем вы решите разбить его на область и создать контроллеры для отдельных операций управления?

Кроме того, при использовании областейя должен рефакторинг, чтобы использовать области для всего, или только для разделов, которые нуждаются в области?

Ответы [ 3 ]

21 голосов
/ 01 сентября 2011

Существует столько же мнений о том, как это организовать, сколько существует разработчиков, но мои взгляды таковы:

Контроллеры должны отвечать только за взаимодействие с представлениями.То есть создание экземпляров и заполнение объектов модели, получение данных из ваших бизнес-объектов или уровня доступа к данным, реагирование на любые запросы со страницы (отправка форм, запросы AJAX, интерфейс к динамическим методам / классам создания ресурсов (например, создание CAPTCHA или других динамическихизображения)) и т. д. Если вы придерживаетесь этой философии, их размер и сложность никогда не должны превышать ваши взгляды.

Области Я склонен использовать области, чтобы разбить приложение на под-приложения.Например, сайт может иметь дискуссионный форум, каталог продуктов, информацию о компании, базу данных поддержки и т. Д., Все из которых будут отдельными областями:

/areas/forum/...
/areas/product/...
/areas/company/...
/areas/support/...

Тогда в каждой области вы можете иметь

/areas/support/{views|controllers}
/areas/support/search/
/areas/support/contact/
/areas/support/knowledgebase/

и т. Д.

Как и на сайте веб-форм, где каждая папка представляет отдельную «область» веб-сайта, области предоставляют другой уровень организации, который позволяет вам сохранять связанные контроллеры, представления и т. Д.в общем месте и должны использоваться аналогичным образом.

9 голосов
/ 01 сентября 2011

Мы используем области для различения заметных отдельных проблем в приложении.Особенно отдельные проблемы, которые могут потребовать уникальной аутентификации или макета / стиля для каждой области.Например, я работаю над приложением, которое имеет своего рода «модули».Каждый модуль представляет собой область mvc, а каждый модуль представляет собой раздел установки, который также является областью mvc.Приложение имеет три модуля, то есть всего шесть областей - с шестью пользовательскими правами.Это позволяет каждому модулю иметь новую «главную страницу / макет» (внешний вид) и определенный уровень безопасности.

Это также помогает в разделении кода;код в AreaA не имеет ничего общего с кодом в AreaB, но иногда AreaA и AreaB используют общий код, найденный в корне проекта.

Внеобластные части сайта имеют такие вещи, как имя пользователя,страницы ошибок (404 и т. д.), основная область «запуска» для входа в модули, обработка исключений и другие элементы, охватывающие любую из областей mvc.

0 голосов
/ 01 сентября 2011

Это наиболее удобно, когда вам нужно раздельное управление и повторное использование имен контроллеров. Как будто вы можете использовать его для администрирования сайта, блога и т. Д.

...