Встроенный веб-сервер C с открытым исходным кодом, поддерживающий веб-службу на основе SOAP / JSON-RPC и совместимый с процессором ARM

Я работаю над проектом по внедрению веб-сервера, написанного на C, в устройство. Требование состоит в том, что он должен поддерживать веб-сервисы (SOAP/JSON-RPC) и должен быть совместим с процессором ARM. Любые предложения по конкретным продуктам или где искать в первую очередь?


person Mahendra Liya    schedule 07.12.2010    source источник
comment
Какая ОС? Сколько оперативной памяти вам нужно для работы? Для 4 МБ оперативной памяти + 1 ГБ дискового пространства (SD-карта) я успешно использовал Debian Linux + Lighttpd.   -  person slebetman    schedule 07.12.2010
comment
@slebetman: Спасибо за ваше время. Мы планируем использовать Linux 2.6x, а объем оперативной памяти устройства составляет 256 МБ. Он будет иметь процессор на базе ARM.   -  person Mahendra Liya    schedule 07.12.2010
comment
Ах, в этом случае вы можете использовать любой веб-сервер, который вам нравится. Обработка SOAP/JSON-RPC на самом деле больше зависит от того, какой язык программирования и фреймворк вы выберете для реализации своего сервиса. Я рекомендую lighttpd, если вам нужны небольшие накладные расходы на память (с 256 МБ вы на самом деле этого не сделаете), и Apache2 или Nginx, если вам нужна высокая пропускная способность для вашего приложения CGI.   -  person slebetman    schedule 07.12.2010


Ответы (2)


Учитывая ваше описание: платформа на базе Linux с 256 МБ ОЗУ, вы можете использовать любой веб-сервер, который вам нравится. 256 МБ ОЗУ переносят ваше устройство из типичной встроенной территории в пространство сервера.

Не беспокойтесь о поддержке ARM, потому что она хорошо поддерживается сообществом Linux. Это одна из архитектур, официально поддерживаемых Debian. Я сам запускаю пару веб-серверов на ARM с Debian и lighttpd с аппаратным обеспечением, имеющим всего 32 МБ ОЗУ.

Три самых популярных веб-сервера (и популярность очень важна, поскольку это означает, что вы можете легко погуглить, если у вас возникнут проблемы):

  • lighttpd — очень мало использует ОЗУ, поскольку он однопоточный, а также очень мало использует ЦП. Недостатком является то, что он может медленно реагировать, если вы попытаетесь запустить на нем тяжеловесные приложения CGI с интенсивным использованием ЦП, поскольку он является однопоточным.

  • Apache2 - интенсивно использует оперативную память. Рабочий режим Apache по умолчанию заключается в том, чтобы поддерживать потоки как можно дольше для обработки больших нагрузок. Это означает, что большую часть времени вы используете оперативную память для спящих процессов. Но если вам нужно работать с тяжелыми грузами, это хорошо. Подходит для тяжелых CGI-приложений.

  • Nginx — новинка на рынке. Не так хорошо документирован (на данный момент очевидно, что документация со временем улучшается), как lighttpd или Apache, но люди говорят, что он превосходит оба. Он является многопоточным, как Apache2, но неблокирующим, как lighttpd, поэтому он сочетает в себе лучшее из обоих миров: в целом он использует меньше оперативной памяти, чем Apache2 (хотя и больше, чем lighttpd), и работает под нагрузкой не хуже, если не лучше, чем Apache2. Единственным реальным недостатком для меня является документация.

person slebetman    schedule 07.12.2010

Если на устройстве действительно мало ресурсов, рассмотрите встроенную библиотеку веб-сервера, например Mongoose или libsoup (с использованием GLib). Однако обратите внимание, что такие службы, как анализ SOAP и XML, в целом довольно требовательны к ресурсам.

person Steve-o    schedule 07.12.2010
comment
Спасибо за ваш ответ. Хотел бы спросить, есть ли у вас опыт работы с Mongoose, так как рассматривал его как вероятный вариант. - person Mahendra Liya; 07.12.2010
comment
Я посмотрел, но действительно хотел что-то еще меньшее и портативное, в итоге получил свою собственную реализацию ( code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/ ) - person Steve-o; 07.12.2010