Модуль Apache для отдыха - PullRequest
0 голосов
/ 27 мая 2010

Моя цель - создать модуль apache, который будет предоставлять сервисы RESTful (т. Е. У нас есть некоторый устаревший код, который контролирует / запрашивает некоторое сетевое оборудование, и теперь мы хотели бы представить эту функциональность как сервис RESTful). Я думаю, что поток может выглядеть примерно так:

WebBrowser - выдает RESTful URI ---> [Apache (my_module)] -> .. ..---> Интерфейс к существующему коду Legacy.

Я копался в различных вики, блогах, форумах, статьях и т. Д., Но я просто не могу понять, как эти RESTful URL-адреса попадут (my_module) в apache [вы можете сказать, что я никогда не работал с web- внутренние серверы, гораздо меньше модулей, прежде]. Я имею в виду, нужно ли мне отредактировать этот файл httpd.conf и сказать что-то вроде: отправить все URL, которые выглядят как http://baseurl/restservices/..., в my_module. Если да, то как мне это сделать?

Кроме того, что на самом деле получит my_module? Получает ли он полное http-сообщение с запросом и должен ли он анализировать его как обычные CGI-программы?

Кроме того, каков наилучший способ взаимодействия my_module с моим прежним кодом? Например, откройте для него TCP-соединение, отправьте сообщения и напишите обертку вокруг устаревшего кода, чтобы интерпретировать эти сообщения. Или my_module может как-то напрямую вызывать функции из моего старого кода, если я скомпилировал весь свой старый код как модуль в apache?

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

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Я бы написал расширение для PHP или Python и использовал бы mod_php / mod_wsgi

Я думаю, что вы подходите к этому неправильно:

Модули Apache не совсем так, как вы хотите обрабатывать URL, если ваши требования являются базовыми. В зависимости от языка, на котором написан ваш прежний код, я бы посоветовал:

Привязка его API к модулю python или PHP , и этот скрипт вызывается Apache обычным способом. Также очень просто (во многих случаях) приклеить скомпилированный язык в стиле C-call к этим языкам сценариев, а не к самому Apache.

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

Как PHP, так и Python также имеют RESTful-фреймворки и утилиты.

Если вы действительно пишете модуль Apache , тогда посмотрите Написание модулей Apache с Perl и C

См: Разработка расширений PHP на C , Расширение Python на C или C ++ ... также при использовании Python для проверки содержимого WSGI.

1 голос
/ 27 мая 2010

Я бы согласился с Эйденом. Написание модулей Apache не для слабонервных, и вы определенно не хотите идти туда, если вы абсолютно не обязаны. Вы должны быть готовы хорошо разбираться в том, как работает Apache.

Если вы все еще думаете, что вам нужно, тогда посмотрите на:

http://httpd.apache.org/apreq/

Это библиотека, которая использует существующие библиотеки времени выполнения Apache и предоставляет функциональность более высокого уровня для работы с данными POST, файлами cookie и т. Д. Из кода C, подключенного к Apache через пользовательский модуль.

Книга, которую Эйден упоминает, хотя и несколько устарела. Лучше получить:

Книга модулей Apache: разработка приложений с использованием Apache

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