2010-05-26 4 views
0

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

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

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

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

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

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

ответ

3

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

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

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

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

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

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

Если вы пишете модуль Apache, а затем проверить Writing Apache Modules with Perl and C

См: Developing PHP Extensions in C, Extending Python in C or C++ ... также при использовании Python проверки на WSGI вещей.

+0

Спасибо за ответ. Унаследованный код находится в «C». Ожидание загрузки - это несколько конечных пользователей, подключающихся к нему, и все они, возможно, делают 10-100 вызовов/сек. Это может быть где угодно между 100-1000 запросов/сек. Следовательно, я думаю, для повышения производительности решение о внедрении модуля apache показалось разумным, а не apache, вызывающим скрипт cgi python для каждого запроса (что было бы очень трудоемким). Итак, я думал о внедрении модуля apache (желательно, например, в C, поскольку apache также находится в C, и все будет хорошо перекомпилировано). –

+0

Мой совет, держите его простым и привяжите к скриптовому языку. Накладные расходы не так велики, и машины обычно стоят меньше, чем повышенная сложность кода и отсутствие гибкости с течением времени. Плюс внедряйте свои собственные Restful обработчики, чтобы декодировать POST, и что еще не будет кошмаром. Но книга в моем посте должна рассказать вам, что вам нужно. Время выполнения Apache в основном представляет собой тонну крючков для функций C, которые вы регистрируете через структуру. –

+0

Да, я думаю, что это будет первое направление, которое я возьму, т. Е. Избежать модулей apache и попытаться выяснить, будет ли прототип без него приемлемым для клиента. –

1

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

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

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

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

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

The Apache Modules Book: Application Development with Apache

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