Совместимость с C++ для облегченных веб-серверов

Я очень новичок в вопросах веб-серверов и относительно наивен в изучении C++. Сейчас я работаю над проектом, в котором мне нужно создать плагин для существующего веб-сервера. Это коммерческий проект для компании, но это также проект моей бакалаврской диссертации. Я не совсем уверен, какой веб-сервер подойдет для моего проекта. Веб-сервер, который я ищу, должен обрабатывать сетевой сокет и представлять запрос http или https как объект, из которого плагин (который я хочу разработать) должен читать заголовок, URL-адрес, данные и переводить (специально переводя SOAP и REST) ​​это соответственно для API файловой системы хранилища данных компании и наоборот. Плагин должен быть разработан с использованием C ++. Серверная среда - Linux Cent OS 6. Обычный персонал компании никогда раньше не работал с серверной средой Linux. Это небольшая компания. Раньше они работали только с Windows и веб-сервером IIS. Наш руководитель проекта не хочет использовать Apache, потому что он занимает много места и работает медленно, а IIS не подходит для Linux. Итак, мы ищем бесплатный легковесный веб-сервер для Linux.

Я вижу, что люди много говорят о Nginx, G-WAN, Cherokee, Lightspeed, Varnish, Tntnet и т. д. Но я не нашел какого-либо стандартного источника суждения о сравнении этих веб-серверов. Поэтому, пожалуйста, дайте мне знать, какой веб-сервер был бы предпочтительнее для меня. Ожидание ответа.


person the_naive    schedule 20.03.2012    source источник
comment
Со всеми этими требованиями это будет что угодно, только не маленькое и простое, независимо от того, как вы его изогните. Поскольку вам также нужно, чтобы он был кроссплатформенным, вряд ли есть какие-либо альтернативы, кроме apache + apr + переносимая библиотека мыла.   -  person nos    schedule 20.03.2012
comment
Слишком большой означает, что у него тяжелый отпечаток ноги. Я хочу веб-сервер с небольшой площадью. Apache имеет много функций, которые делают его медленным, и он занимает много места. Веб-сервер, который мне нужен, просто должен иметь базовую аутентификацию с возможностью обработки http и https и представлять его как объект. Я надеюсь, что это проясняет. Пожалуйста, задавайте больше вопросов, если вы не понимаете, что я имею в виду.   -  person the_naive    schedule 20.03.2012
comment
Вам нужно написать плагин для полноценного веб-сервера? В качестве альтернативы вы можете использовать CGI или FastCGI, что позволит вам поддерживать любой веб-сервер, поддерживающий эти стандарты, поэтому вы не ограничены конкретным.   -  person Alex    schedule 20.03.2012
comment
Функционала не хватает. Какая надежность и производительность при большой нагрузке вам нужны? Чтобы их получить, нужен сложный HTTP-сервер. См. также мой ответ, предлагающий библиотекам сделать ваше приложение автономным HTTP-сервером.   -  person Basile Starynkevitch    schedule 20.03.2012


Ответы (3)


Их несколько, например lighttpd. здесь описано, как для него можно создать плагины C.

ПРИМЕЧАНИЕ

Я хочу, чтобы исходный код веб-сервера был как можно меньше.

Длина исходного кода не является хорошим показателем производительности и использования памяти программой.

person Constantinius    schedule 20.03.2012
comment
А как насчет стабильности Lighttpd? Это стабильно? - person the_naive; 20.03.2012
comment
И, кроме того, я хотел бы понять исходный код lighttpd. Не могли бы вы сказать мне, как мне действовать? - person the_naive; 20.03.2012
comment
Lighttpd стабилен, так как используется около 9 лет. Вы можете получить исходный код по адресу http://www.lighttpd.net/download. Lighttpd написан на C, поэтому вы должны владеть этим языком, чтобы понимать исходный код. Я уверен, что есть документация об общей структуре и архитектуре программы. Но вам не обязательно читать исходный код lighttpd, чтобы писать для него плагины. Напротив! - person Constantinius; 20.03.2012
comment
А как насчет Nginx? Если сравнивать Nginx и Lighttpd, с каким проще работать? И что более гибко с точки зрения компактности, скорости и т. д.? - person the_naive; 20.03.2012
comment
Извините, я никогда не проводил сравнительный анализ этих двух веб-серверов на предмет их объема памяти и производительности. - person Constantinius; 20.03.2012

«На самом деле я не нашел какого-либо стандартного источника суждений о сравнении этих веб-серверов».

Ученый сделал такое сравнение большинства приведенных вами серверов. Tntnet тестируется в другом месте.

"пожалуйста, дайте мне знать, какой веб-сервер был бы предпочтительнее для меня."

Учитывая ограничения, которые вы выразили:

«Компания никогда раньше не работала с серверной средой Linux. Это небольшая компания. Раньше они работали только с Windows и веб-сервером IIS. Наш менеджер проекта не хочет использовать Apache, потому что он занимает много места и медленный, а IIS не подходит. для linux. Итак, мы ищем бесплатный легкий веб-сервер для linux"

G-WAN (150 КБ) является самым легким, и его C/C++ scripts избавит вас от необходимости перекомпилировать и связывать modules, которые нужны другим серверам.

Первоначально G-WAN был написан для Windows людьми, которые никогда не рисковали использовать Linux (до того, как был сделан порт для Linux, который появился через 6 месяцев после выпуска Windows).

В результате G-WAN был разработан максимально простым (оптимальные настройки применяются без файлов конфигурации или системных скриптов), потому что это облегчало жизнь разработчикам.

Но не верьте мне на слово (я являюсь частью команды G-WAN) и попробуйте — это единственный способ убедиться, что это соответствует вашим потребностям.

person Gil    schedule 03.05.2012

Если вы хотите создать веб-приложение на C++, на ум приходит набор инструментов Wt.

Вы также можете написать приложение FastCGI или SCGI на C++ и зарегистрировать его, соответствующим образом настроив свой веб-сервер (например, http://www.lighttpd.net/ или старый добрый апач).

И есть несколько библиотек, чтобы сделать ваше приложение HTTP-сервером. Например, Onion (который написан на C, но может использоваться из C++).

person Basile Starynkevitch    schedule 20.03.2012