MVC большие веб-сайты, используйте один контроллер … или многие?

Если Вы имеете лицензию MSDN, проверяете инструменты Expression . Это разработано явно для WPF, экспорт непосредственно в Visual Studio, и это может помочь упростить Ваш переход.

9
задан johnnietheblack 29 September 2009 в 00:00
поделиться

5 ответов

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

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

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

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

Не уверен, что вы имеете в виду под контроллером вне фреймворка - Я '

4
ответ дан 4 December 2019 в 15:22
поделиться

Обычно люди делят контроллеры на контроллеры, ориентированные на определенные области функциональности.

Затем они прикрепляют перед всем этим «фронт-контроллер», так что есть только одна точка входа в заявление. Единственная задача фронт-контроллера - направлять входящие запросы на соответствующий контроллер.

Посмотрите, как настроен компонент Zend_Controller. Он может предоставить все, что вам нужно, и вы можете использовать его, не приобретая полную версию Zend Framework.

3
ответ дан 4 December 2019 в 15:22
поделиться

Это зависит от того, как другие части будут работать. Если у вас есть только один файл модели, вероятно, не стоит разделять контроллер. Если вы можете разделить модель на части, а также контроллер, то сделайте это.

Однако я часто нахожу, что есть ' s слишком много перекрытия между моделями, чтобы разделить их. У вас может быть модель для статей, но если вы хотите отобразить 20 лучших статей на боковой панели на других страницах, этот код должен быть в модели статьи - и он понадобится вам на каждой странице.

Честно говоря. хотя единственный способ сделать это - попробовать и увидеть. Начните с одной точки входа, а если она станет слишком громоздкой, реорганизуйте ее на более мелкие фрагменты.

1
ответ дан 4 December 2019 в 15:22
поделиться

Я бы посоветовал один маршрутизатор / диспетчер, много контроллеров. Контроллеры должны сопоставляться с URL-адресами, что означает различную функциональность. Контроллер будет взаимодействовать с различными службами для выполнения каждого варианта использования, поэтому один контроллер для всего вашего приложения станет слишком громоздким, если ваше приложение имеет несколько вариантов использования.

1
ответ дан 4 December 2019 в 15:22
поделиться

Я склонен разделять контроллеры в зависимости от их ответственности за определенный раздел сайта / приложения. Это значительно упрощает поддержку кода. Кроме того, я группирую контроллеры (и представления, модели) в модули (папки). Вот пример из текущего проекта, над которым я работаю:

  • Блог
    • Сообщения
    • Комментарии
    • Категории
  • Настройки
    • Сообщения
    • Пользователи

Чем сложнее сайт, чем больше модулей я использую. Хотя большинство моих модулей содержат только один контроллер Index, мне нравится организация, которую они предоставляют.

Затем я использую маршрутизатор (передний контроллер), который сопоставляет URI стиля REST с правильным модулем / контроллером / действием. Пример: mysite.com/blog/posts/view/7 вызовет Controller_Posts :: view (7) из модуля «блог». Дополнительным преимуществом использования модулей является то, что я могу иметь более конкретные URI, чем если бы у меня не было модулей. Хотя я полагаю, что это можно исправить, используя маршрутизатор, поддерживающий определение пользовательских маршрутов, но мне это не очень нравится.

Как и многие другие вещи, все сводится к тому, с чем вам комфортно как разработчику, но мы, вероятно, можем согласиться с тем, что чем больше у вас организованности, тем лучше вы будете, если вы не будете слишком усложнять вещи.

Вкратце, я бы порекомендовал вам изучить использование фреймворка. Я понимаю, если вы уже не хотите использовать один из них, так как я их тоже избегал. В итоге я написал свой собственный, который в прошлом году мне очень пригодился. Это был отличный опыт обучения, и он содержит только то, я хочу / нуждаюсь. Что, как говорится, Возможно, вы захотите изучить Kohana и CakePHP - они не слишком раздутые IMO, и они определенно сэкономят ваше время, если вы решите не писать свои собственные.

4
ответ дан 4 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: