Чи можлива робота web-додатку без CGI

Наскільки зрозумів WEB-додаток, працюючи десь на WEB-сервері, має якось спілкуватися з ним і цю роль «комунікаційного протоколу» грає CGI. Почитавши про CGI, FastCGI і трохи про Django моє питання, яке в сабжі не було вичерпано.

Мені хочеться знати, а чи можлива робота WEB-програми без використання CGI? Ймовірно, існують інші способи спілкування з WEB-сервером, які поки не знаю.

PS: Сильно не штовхайте за таке питання. Для когось це питання з розряду «капітанських», а для мене веб-розробка новий напрямок, в якому я поки що навіть на рівень «новачка» не тягну ) Я тільки-но приступив до осягнення основ розробки WEB-додатків.

Прошу перевірити моє розуміння веб-додатків.

1) Коли людина відриває web-браузер(далі за текстом клієнт), наприклад Safari 2) І набирає посилання, то клієнт дізнавшись де знаходиться web-сервер, розрізав його dns-ім'я шле йому запит 3) web -сервер(для мене це магія пов'язана зі словом Apache) згідно своїх налаштувань посилає їх web-додатку 4) Web-додаток написаний наприклад на Php або Python формує сторінку і пише її в STDOUT 5) Отриману від web -Додатки по stdout сервер(apache) шле сторінку клієнту(компу де стоїть safari запитав)

Як видно з моїх слів для мене web-додаток це те, що формує кінцевий html, що відправляється користувачам. Це Web-додаток я можу написати на Python використовуючи Django.

Такі питання на хабрі ставити марно. =)

Більшість тих, хто відповів, написали місцями повну нісенітницю. Переважна більшість веб-програмістів далі своїх фреймворків не вилазять, і вони в результаті повна каша в голові. Наприклад, хтось плутає інтерфейс (WSGI, Pump, WEB3, PSGI, Rack, CGI тат.д.), сервер додатків (uWSGI, php-fpm, Rack, Gunicorn, unicorn, flup, Apache у цій ролі, і ще тисячі їх) і протокол (HTTP, uwsgi, FastCGI, SCGI, CGI, AJP, WebSocket, та багато їх). Хтось плутає протокол, спосіб його реалізації та спосіб запуску інтерпретатора.

Основне, що потрібно знати, міститься в документації Django: docs.djangoproject.com/en/dev/howto/deployment/

Відповіддю на ваше запитання буде: так існує безліч і кожен сервер HTTP підтримує цілий набір протоколів для спілкування з сервером додатків. І сервери програм можуть підтримувати один або кілька протоколів, один або кілька інтерфейсів. Деякі HTTP-сервера вміють виконувати подвійну роль, виступаючи і ролі сервера-приложения, надаючи певний інтерфейс. А деякі програми самі містять інтегрований HTTP-сервер. Термін «веб-сервер» занадто загальний, і трактуватися може різними способами.