2010-02-25 2 views
3

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

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

  • CGI
  • FastCGI
  • WSGI

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

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

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

ответ

5

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

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

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

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

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

+0

Полезно знать, что FCGI находится сейчас в верхней части списка: p – Milan

1

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

1

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

Смежные вопросы