Какой интерфейс веб-сервера выбрать? - PullRequest
3 голосов
/ 25 февраля 2010

Я нахожусь в процессе планирования веб-сервиса, который будет написан на C ++. Цель состоит в том, чтобы иметь возможность выбрать более или менее любой веб-сервер для управления сервисом. Чтобы это стало реальностью, мне, очевидно, нужно выбрать стандартизированный интерфейс между веб-серверами и приложениями.

Хорошо известные методы, о которых я слышал:

  • CGI
  • FastCGI
  • WSGI

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

  • должен быть достаточно быстрым (насколько я слышал, это в значительной степени исключает CGI)
  • должен легко использоваться в чистой среде C / C ++ (например, должны быть доступны библиотеки)
  • должен обеспечивать поддержку HTTP 1.1 (не знаю, если это имеет значение)

Спасибо за любые предложения:)

Ответы [ 3 ]

6 голосов
/ 25 февраля 2010

WSGI для приложений Python; если ваш язык C ++, это не вариант.

FCGI - хороший путь. FCGI может быть вызван как стандартный CGI, удобный для отладки и тестирования, а затем запущен как FCGI на производстве.

Производительность CGI против FCGI во многом зависит от того, что вы пытаетесь сделать, и от количества ожидаемого трафика. Задачи, которые требуют много времени для запуска, больше всего выигрывают от FCGI; контроллер FCGI может быть настроен для запуска дополнительных процессов для обработки больших нагрузок.

Практически любой веб-сервер будет работать с CGI с минимальной конфигурацией; вам, вероятно, понадобится дополнительный модуль для запуска FCGI, но это зависит от веб-сервера.

http://en.wikipedia.org/wiki/FastCGI

1 голос
/ 25 февраля 2010

не должно быть много проблем с CGI / fastCGI. если вы реализуете fastcgi, ваша программа все еще может работать как обычный CGI. и большинство веб-серверов поддерживают cgi / fastcgi.

1 голос
/ 25 февраля 2010

нет ничего "медленного" в CGI, оно просто не масштабируется. FCGI более масштабируем, но вы не можете легко развиваться в этой среде, потому что этот процесс долгое время и отладка делает кошмар HTTP / 1.1 не проблема на этом уровне абстракции. Если вы беспокоитесь о скорости и на этом этапе без профилирования или тестирования вам не следует, но эти интерфейсы не о скорости, они о совместимости. Скорость будет зависеть от контейнера, из которого вы запускаете код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...