Почему MVC для веб-сайтов требует единой точки входа? - PullRequest
3 голосов
/ 08 апреля 2011

Я вижу, что многие реализации MVC для веб-сайтов имеют одну точку входа, такую ​​как файл index.php, а затем анализируют URL-адрес, чтобы определить, какой контроллер следует запустить. Мне это кажется довольно странным, потому что это связано с необходимостью переписать URL, используя переписанные Apache, и с достаточным количеством страниц, чтобы один файл стал раздутым.

Почему бы вместо этого не использовать отдельные страницы в качестве контроллеров? Я имею в виду, что если у вас есть страница на вашем сайте, на которой перечислены все зарегистрированные участники, то пользователи, на которые перейдут страницы members.php, станут контролерами для участников. Этот php-файл запросит у модели участников список членов из базы данных и передаст его представлению членов.

Возможно, я что-то упустил, потому что только недавно обнаружил MVC, но эта проблема меня беспокоила. Разве такой дизайн не будет предпочтительнее, потому что вместо одного раздутого файла ввода, который все страницы неинтуитивно вызывают модели и представления для конкретной страницы, содержатся, инкапсулируются и вызываются с соответствующей страницы?

Ответы [ 4 ]

6 голосов
/ 08 апреля 2011

По моему опыту, наличие единой точки входа имеет несколько печально известных преимуществ:

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

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

Однако, иногда имея отдельнуюточка входа может быть пустой тратой ресурсов сервера.Это относится, очевидно, к статическому контенту, но также и тогда, когда у вас есть набор запросов, которые имеют очень конкретное назначение и вам просто нужен очень маленький набор ресурсов (например, им не нужен доступ к БД).Тогда вам следует рассмотреть возможность использования более чем одной точки входа.Я сделал это для сайта, над которым я работаю.Он имеет точку входа для всего «стандартного» динамического содержимого и еще одну для вызовов общедоступного API, которые требуют гораздо меньше ресурсов и имеют совершенно другую систему URL.

И последнее замечание: еслисайт хорошо реализован, ваш index.php не обязательно должен быть раздутым:)

3 голосов
/ 08 апреля 2011

все дело в том, чтобы быть СУХИМ, если у вас много php-файлов, обрабатывающих запросы, у вас будет дублированный код.Это просто кошмар обслуживания.

Посмотрите на главную страницу индекса для CakePHP, https://github.com/cakephp/cakephp/blob/master/app/webroot/index.php

независимо от того, насколько велико приложение, мне никогда не приходилось изменятьтот.так как это может раздуться?

1 голос
/ 08 апреля 2011

При использовании прямой ссылки на контроллеры при использовании инфраструктуры MVC исключается возможность реализации плагинов или фильтров контроллера в зависимости от используемой платформы. Наличие единой точки входа стандартизирует загрузку приложения и модулей и выполнение ранее упомянутых плагинов до доступа к контроллеру.

Также Zend Framework использует свою собственную перезапись URL в форме маршрутизации. В приложениях, в которых используется Zend Framework, над которым я работаю, файл .htaccess может содержать 6 строк переписывающих текстов и условий.

0 голосов
/ 08 июня 2011

Отдельная точка входа, безусловно, имеет свои преимущества, но вы можете получить почти такое же преимущество от центрального необходимого файла в верхней части каждой отдельной страницы, который обрабатывает соединения с базой данных, сеансы и т. Д. Он не раздутый, он соответствует DRY принципы (кроме той, которая требует строки), она разделяет логику и представление, и если вы меняете расположение файлов, простой поиск и замена исправят это.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...