Я пытаюсь хорошо понять разделение интересов в веб-разработке, особенно в WSGI .
Это сомнение пришло ко мне, читая о Flask, а затем о Werkzeug, поэтомуЯ сосредоточу свой вопрос, используя их в качестве примера.
Сначала приведу пример кода с веб-страницы Werkzeug :
from werkzeug.wrappers import Request, Response
@Request.application
def application(request):
return Response('Hello World!')
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, application)
Там есть return Response()
.Это похоже на веб-приложение.Но Werkzeug представлен не как веб-фреймворк, а как «библиотека утилит WSGI».Похоже, он указан как Middleware в WSGI в разделе Прочитать документы .
Затем я обнаружил это в PEP 3333 - Интерфейс шлюза веб-сервера Python v1.0.1 :
Обратите внимание, что отдельный объект может играть роль сервера по отношению к некоторым приложениям, а также выполнять роль приложения по отношению к некоторым серверам.Такие «промежуточные» компоненты могут выполнять такие функции, как:
- Маршрутизация запроса к различным объектам приложения на основе целевого URL-адреса после соответствующей перезаписи среды.
- Разрешение нескольких приложений или структурдля параллельного запуска в одном и том же процессе
- Балансировка нагрузки и удаленная обработка путем пересылки запросов и ответов по сети
- Выполнение постобработки содержимого, например применение таблиц стилей XSL
Итак, вот мои вопросы:
1. Являются ли промежуточные программы, такие как плагины, для добавления функциональности серверу или приложению?Я так думаю, но чтобы быть уверенным.
2. Можно ли развернуть целое (и простое) веб-приложение, используя только такой инструмент, как Werkzeug?
2a.Если да: какие преимущества предлагают специализированные веб-фреймворки по сравнению с этими инструментами?Я знаю, что Flask построен поверх Werkzeug, так что же Flask добавляет к нему?
2b.Если нет: что это за оператор return Response()
в примере кода?Я неправильно понимаю концепцию веб-фреймворка / приложения?
Заранее спасибо.