Существуют ли альтернативы CGI (и действительно ли они мне нужны)?


Я разрабатываю приложение, которое будет состоять из 3-4 служб, работающих как отдельные процессы и связанных подходящим IPC. Система будет иметь веб-интерфейс,и я хочу использовать любой веб-сервер.

Веб-интерфейс должен быть доступен по некоторому URL, что позволяет иметь другие URL на том же веб-сервере делать совершенно разные вещи. Я планирую использовать путь ниже этого URL, чтобы указать, что должен делать веб-интерфейс. В нем есть удобства для использования другими приложениями по сети и для людей, чтобы взаимодействовать с ними в браузере.

Без обиняков я бы работал следующим образом:

  • заставьте веб-сервер запускать процесс CGI для каждого запроса, который он получает (как SetHandler в Apache)
  • пусть CGI соединится с IPC
  • пусть он получает все, что ему нужно от серверных служб
  • пусть CGI возвращает HTML / XML и любой статус HTTP на основе ответов служб

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

Например, PHP может открывать постоянные соединения с базой данных MySQL, которые переживают время выполнения скрипта и не нуждаются в повторном создании в следующий раз, хотя я не знаю, как они это делают. Кроме того, насколько я понимаю, модули Apache загружаются один раз при запуске сервера, так что это может быть уберите первый шаг, но это свяжет меня с Апачом.

Итак, каковы хорошие способы подключить обработчик для определенных URL-адресов к различным веб-серверам? Я не хочу обрабатывать HTTP, иначе я мог бы просто использовать прокси-сервер для второго сервера,но это просто кажется таким изобретением колеса. Если вы думаете, что CGI в порядке и есть примеры, когда он обрабатывает большое количество запросов аналогичной структуры, пожалуйста, дайте мне знать.

2 2
ipc

2 ответа:

Хорошо, я пропустил это ранее. Объяснение моего вопроса здесь привело меня к нему:

Вместо того, чтобы создавать новый процесс для каждого запроса, FastCGI может использовать один постоянный процесс, который обрабатывает множество запросов в течение своего жизненного цикла. -- Wikipedia: FastCGI

Даже при умеренных нагрузках CGI-довольно непригодное животное. FastCGI-это опция, но вы, вероятно, также найдете пакет mod_XXXX, где XXXX-это имя вашего языка. Есть мод для ruby, perl и python, например, и, вероятно, несколько других.