Что такое фреймворк для веб-приложений?

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

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

Спасибо

4 ответа

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

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

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

Вы можете получить хороший обзор проблем и возможностей в инструкции Марека Кубицы "Как использовать Python в Интернете". WSGI (помимо многих других способов взаимодействия с базовым веб-сервером) может работать поверх CGI, поэтому теоретически вы можете использовать любой веб-фреймворк Python, который поддерживает WSGI (что означает почти все современные) - дело в том, если вы не занимаетесь чем-то большим, чем просто учитесь и "играете", вы не захотите многократно запускать этот стартап на страницах, которые вы фактически обслуживаете. (Если вы только учитесь и играете, вы можете запустить веб-сервер на своем компьютере для своего собственного эксклюзивного использования, поэтому ограничения вашего хостинг-провайдера не имеют значения;-).

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

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

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

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

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

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

Основными функциями любой структуры являются:

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

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

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

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

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

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

Другие вопросы по тегам