Каждый раз, когда я читаю WSGI или CGI, я сжимаю. Я пробовал читать на нем раньше, но ничего не застряло.
Ответ 2
С совершенно противоположной точки зрения, Blankman, вот моя "Вступление страницы" для интерфейса шлюза веб-служб:
ЧАСТЬ ПЕРВАЯ: WEB-СЕРВЕРЫ
Веб-серверы обслуживают ответы. Они сидят, терпеливо ждут, а затем без какого-либо предупреждения внезапно:
- клиентский процесс отправляет запрос. Клиентский процесс может быть веб-сервером, ботом, мобильным приложением. Это просто "клиент"
- веб-сервер получает этот запрос
- преднамеренное mumble различные вещи случаются (см. ниже)
- Веб-сервер отправляет что-то клиенту
- веб-сервер снова сидит
Веб-серверы (по крайней мере, лучшие) очень ОЧЕНЬ хороши в этом. Они масштабируются вверх и вниз в зависимости от спроса, они надежно проводят беседы с самыми яркими клиентами по действительно развалившимся сетям, и нам никогда не приходится беспокоиться об этом. Они просто продолжают служить.
Это моя точка зрения: веб-серверы просто такие: серверы. Они ничего не знают о контенте, ничего о пользователях, ничего, кроме того, как ждать много и отвечать надежно.
Ваш выбор веб-сервера должен отражать предпочтение вашей доставки, а не ваше программное обеспечение. Ваш веб-сервер должен отвечать за обслуживание, а не за обработку или логический материал.
ЧАСТЬ ВТОРАЯ: (PYTHON) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Программное обеспечение не сидит. Программное обеспечение существует только во время выполнения. Программное обеспечение не очень удобно, когда дело доходит до неожиданных изменений в его среде (файлы не находятся там, где они ожидают, переименованные параметры и т.д.). Хотя оптимизация должна быть основным принципом вашего дизайна (конечно), само программное обеспечение не оптимизируется. Разработчики оптимизируют. Программное обеспечение выполняется. Программное обеспечение делает все в разделе "преднамеренное бормотание" выше. Может быть что угодно.
Ваш выбор или дизайн программного обеспечения должны отражать ваше приложение, ваш выбор функциональности, а не ваш выбор веб-сервера.
Здесь традиционный метод "компиляции на языках" для веб-серверов становится болезненным. Вы вставляете код в свое приложение, чтобы справиться с физической серверной средой или, по крайней мере, вынуждены выбирать подходящую библиотеку "обертки" для включения во время выполнения, чтобы создать иллюзию единообразия на всех веб-серверах.
ТАК ЧТО ТАКОЕ WSGI?
Итак, наконец, что такое WSGI? WSGI представляет собой набор правил, написанных на две половины. Они написаны таким образом, что их можно интегрировать в любую среду, которая приветствует интеграцию.
Первая часть, написанная для веб-сервера, говорит: "Хорошо, если вы хотите иметь дело с WSGI-приложением, вот как будет выглядеть программное обеспечение при загрузке. Вот то, что вы должны сделать доступным для приложения, и вот интерфейс (макет), который вы можете ожидать от каждого приложения. Более того, если что-то пойдет не так, вот как будет выглядеть приложение и как вы можете ожидать, что он будет себя вести".
Вторая часть, написанная для прикладного программного обеспечения Python, гласит: "Хорошо, если вы хотите иметь дело с WSGI-сервером, вот как сервер будет думать, когда он свяжется с вами. Вот то, что вы должны сделать доступным для сервер, и вот интерфейс (макет), который вы можете ожидать от каждого сервера. Более того, если что-то пойдет не так, вот как вы должны себя вести, и вот что вам следует сказать серверу.
Итак, у вас есть это - серверы будут серверами, а программное обеспечение будет программным обеспечением, и здесь они смогут отлично справиться, не прибегая к каким-либо дополнительным преимуществам в отношении особенностей другого. Это WSGI.
mod_wsgi, с другой стороны, является плагином для Apache, который позволяет ему разговаривать с WSGI-совместимым программным обеспечением, другими словами, mod_wsgi - это реализация - в Apache - правил первой части вышеприведенного правила.
Что касается CGI.... спросите кого-нибудь еще: -)
Ответ 4
Оба CGI и WSGI определяют стандартные интерфейсы, которые программы могут использовать для обработки веб-запросов. Интерфейс CGI находится на более низком уровне, чем WSGI, и включает в себя сервер, устанавливающий переменные среды, содержащие данные из HTTP-запроса, при этом программа возвращает что-то отформатированное в значительной степени подобно голосовой ответ HTTP-сервера.
WSGI, с другой стороны, является специфичным для Python интерфейсом с более высоким уровнем, который позволяет программистам писать приложения, которые являются агрегированными для сервера, и которые могут быть обернуты в другие приложения WSGI (промежуточное программное обеспечение).