Я разрабатываю приложение, которое будет состоять из 3-4 сервисов, которые выполняются как отдельные процессы и связаны между собой подходящим IPC. Система будет иметь веб-интерфейс, и я хочу использовать любой веб-сервер.
Веб-интерфейс должен быть доступен по некоторому URL-адресу, что позволяет другим URL-адресам на одном веб-сервере выполнять совершенно разные действия. Я планирую использовать путь под этим URL, чтобы указать, что должен делать веб-интерфейс. Он имеет возможности для использования другими приложениями в сети и для взаимодействия людей в браузере.
С манжеты я бы работал следующим образом:
- заставить веб-сервер запускать процесс CGI для каждого получаемого им запроса (например, SetHandler в Apache)
- пусть CGI подключается к IPC
- пусть он получает все, что ему нужно от бэкэнд-сервисов
- пусть CGI возвращает HTML / XML и любой статус HTTP, основанный на ответах служб
Теперь, что я действительно хочу, это избежать первых двух шагов, или, если я не могу, избежать второго, потому что я боюсь, что трачу впустую производительность на ненужные накладные расходы (запросы, поступающие из других приложений может быть частым).
PHP, например, может открывать постоянные соединения с базой данных MySQL, которые выживают во время выполнения скрипта и не нуждаются в воссоздании в следующий раз, хотя я не знаю, как они на самом деле это делают. Кроме того, насколько я понимаю, модули Apache загружаются один раз при запуске сервера, так что это может удалить первый шаг, но привязать меня к Apache.
Итак, каковы хорошие способы подключить обработчик для определенных URL-адресов к различным веб-серверам? Я не хочу обрабатывать HTTP, иначе я мог бы просто использовать настройку прокси-сервера для второго сервера, но это, кажется, просто изобретает за рулем. Если вы думаете, что CGI в порядке и есть примеры, когда он обрабатывает большое количество запросов аналогичной структуры, пожалуйста, дайте мне знать.