Что такое фреймворк для веб-приложений? - PullRequest
3 голосов
/ 22 мая 2010

Я вхожу в python для cgi и наткнулся на Django. Я не совсем уверен, что понимаю это очень сильно. Это то, что я должен установить внутри apache, или это то, что я могу использовать с моим cgi?

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

спасибо

Ответы [ 4 ]

4 голосов
/ 22 мая 2010

Хотя вы могли бы запускать веб-фреймворк Python поверх CGI, я не думаю, что вы хотите : веб-фреймворк предоставляет вам множество дополнительных функций для кодирование проще, но часть цены, которую вы платите за это, состоит в том, что инфраструктура имеет много дополнительного кода для обеспечения этой функциональности - этот код должен быть загружен, и его части инициализации выполняются каждый раз, когда начинается процесс веб-приложения.

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

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

Хороший обзор проблем и возможностей можно найти в howto Marek Kubica "HOWTO Использование Python в Интернете". WSGI (помимо прочего, он может взаимодействовать с базовым веб-сервером) может работать поверх CGI, поэтому теоретически вы можете использовать любую веб-среду Python, поддерживающую WSGI (что означает почти все современные) - суть в том, что, если вы не занимаетесь чем-то большим, чем просто изучаете и «играете вокруг», вы не хотите хотеть нести этот стартап снова и снова на страницах ты на самом деле служишь. (Если вы просто учитесь и играете, вы можете запустить веб-сервер на своей собственной машине для своего эксклюзивного использования, поэтому ограничения вашего хостинг-провайдера не имеют значения; -).

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

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

И последнее, но не менее важное: вы не должны игнорировать возможность разработки веб-приложений на Google App Engine - хотя и со своими собственными особенностями и ограничениями, он предлагает среду, совместимую с WSGI и свободную от заряд для даже довольно интенсивного использования. Существуют интересные легковесные фреймворки, специально разработанные для использования преимуществ App Engine, такие как превосходная tipfy (эта страница из вики tipfy также ссылается на другие), но, в частности, вы можете запустить там популярный фреймворк django ( с особенностями и ограничениями, как я уже сказал - в частности, без реляционной базы данных - но это все еще самый популярный выбор несмотря на это).

В первые дни существования App Engine некоторые люди беспокоились о том, что его использование может привести к «блокировке» - поскольку оно отличается от других сред хостинга, не будет ли веб-приложение, разработанное для него, переносить в другое место, если и когда кто-то захочет к? К счастью, программное обеспечение с открытым исходным кодом, такое как appscale и typhoonae , развеяло все подобные проблемы.

0 голосов
/ 22 мая 2010

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

Django имеет 3 популярных коннектора для HTTP-сервера: WSGI, FastCGI и mod_python. Это все объясняется ... где-то здесь, поэтому я не буду повторять информацию, которую легко обнаружить.

0 голосов
/ 22 мая 2010

В основном функции любого фреймворка: -

  1. убедитесь, что вам не нужно выполнять повторяющиеся задачи.
  2. облегчает повторное использование и модульность
  3. они обеспечивают уровень абстракции (который в большинстве случаев делает вас более продуктивным)

Итак, Django - это фреймворк для веб-приложений; естественно, он удовлетворяет всем трем условиям, указанным выше.

Если вы заинтересованы в cgi-программировании на Python, вам не следует смотреть на Django.

С другой стороны, если вы ищете варианты для веб-разработки, тогда django, безусловно, является хорошим вариантом, а ручное программирование cgi - нет.

0 голосов
/ 22 мая 2010

Фреймворк веб-приложений, такой как Django, заменяет CGI, порождая его собственные процессы и обрабатывая запросы от веб-сервера. Они также предоставляют инструменты для упрощения HTML путем создания шаблонов, частичных шаблонов, помощников и т. Д.

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

...