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