Django, Rails Routing ... Точка? - PullRequest
       32

Django, Rails Routing ... Точка?

6 голосов
/ 31 декабря 2008

Я - студент веб-разработки (и колледжа), поэтому мои извинения, если это звучит наивно и оскорбительно, я, конечно, не имею в виду. Мой опыт был с PHP и с небольшим проектом на горизонте (прославленный календарь смен), я надеялся изучить одну из структур более высокого уровня, чтобы облегчить бремя кода. До сих пор я смотрел на CakePHP Symfony Django и Rails.

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

Книга "The Rails Way", которую я читаю, признает, что это медлительная собака и является причиной большинства проблем с производительностью в крупных проектах. У меня вопрос "зачем это вообще?" Есть ли конкретная точка в парадигме url-map-to-a-file (или mod_rewrite в один файл), которая требует регулярных выражений и сложных схем маршрутизации? Я что-то упускаю, не используя их?

Заранее спасибо!

Ответы [ 6 ]

6 голосов
/ 02 января 2009

Большая часть этого уже покрыта, но никто еще не упомянул SEO. Google придает большое значение самому URL, если этот URL-адрес является widgets.com/browse.php?17, это не очень удобно для SEO. Если ваш URL-адрес widgets.com/products/buttons/, это положительно повлияет на рейтинг страницы для кнопок

6 голосов
/ 31 декабря 2008
  • URL должны легко запоминаться и произноситься. И пользователь должен знать, чего ожидать, когда она увидит этот URL. Сопоставление URL-адреса непосредственно с файлом не всегда позволяет это.
  • Возможно, вы захотите использовать разные URL для одинаковой или, по крайней мере, похожей отображаемой информации. Если ваш сервер вынуждает вас использовать сопоставление файлов 1 url <-> 1, вам нужно создать дополнительные файлы со всей их функцией перенаправления на другой файл. Или вы используете такие вещи, как mod_rewrite, что не проще, чем отображение URL в Rails.
  • В одном из моих приложений я использую URL, который выглядит как http://www.example.com/ имя пользователя / некоторые дополнительные вещи /. Это также можно сделать с помощью mod_rewrite, но, по крайней мере, для меня проще настроить URL-адреса в проекте django, чем в каждом экземпляре apache, в котором я запускаю приложение.

только мои 2 цента ...

3 голосов
/ 02 января 2009

Хранение кода приложения в дереве документов веб-сервера представляет собой проблему безопасности.

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

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

2 голосов
/ 01 января 2009

URL-адреса Django также очень настраиваемы. С PHP-фреймворками, такими как Code Igniter (я не уверен насчет Rails), вы вынуждены использовать структуру / class / method / extra / URL. Хотя это может быть полезно для небольших проектов и приложений, как только вы попытаетесь сделать его больше / динамичнее, вы столкнетесь с проблемами, и вам придется переписать часть фреймворка для его обработки.

0 голосов
/ 31 декабря 2008

Зависит от того, насколько велико ваше приложение. У нас довольно большое приложение (более 50 моделей), и оно не доставляет нам проблем. Когда это произойдет, мы будем беспокоиться об этом.

0 голосов
/ 31 декабря 2008

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

...