Я работаю над проектом по внедрению веб-сервера, написанного на C, в устройство. Требование состоит в том, что он должен поддерживать веб-сервисы (SOAP/JSON-RPC) и должен быть совместим с процессором ARM. Любые предложения по конкретным продуктам или где искать в первую очередь?
Встроенный веб-сервер C с открытым исходным кодом, поддерживающий веб-службу на основе SOAP / JSON-RPC и совместимый с процессором ARM
Ответы (2)
Учитывая ваше описание: платформа на базе Linux с 256 МБ ОЗУ, вы можете использовать любой веб-сервер, который вам нравится. 256 МБ ОЗУ переносят ваше устройство из типичной встроенной территории в пространство сервера.
Не беспокойтесь о поддержке ARM, потому что она хорошо поддерживается сообществом Linux. Это одна из архитектур, официально поддерживаемых Debian. Я сам запускаю пару веб-серверов на ARM с Debian и lighttpd с аппаратным обеспечением, имеющим всего 32 МБ ОЗУ.
Три самых популярных веб-сервера (и популярность очень важна, поскольку это означает, что вы можете легко погуглить, если у вас возникнут проблемы):
lighttpd — очень мало использует ОЗУ, поскольку он однопоточный, а также очень мало использует ЦП. Недостатком является то, что он может медленно реагировать, если вы попытаетесь запустить на нем тяжеловесные приложения CGI с интенсивным использованием ЦП, поскольку он является однопоточным.
Apache2 - интенсивно использует оперативную память. Рабочий режим Apache по умолчанию заключается в том, чтобы поддерживать потоки как можно дольше для обработки больших нагрузок. Это означает, что большую часть времени вы используете оперативную память для спящих процессов. Но если вам нужно работать с тяжелыми грузами, это хорошо. Подходит для тяжелых CGI-приложений.
Nginx — новинка на рынке. Не так хорошо документирован (на данный момент очевидно, что документация со временем улучшается), как lighttpd или Apache, но люди говорят, что он превосходит оба. Он является многопоточным, как Apache2, но неблокирующим, как lighttpd, поэтому он сочетает в себе лучшее из обоих миров: в целом он использует меньше оперативной памяти, чем Apache2 (хотя и больше, чем lighttpd), и работает под нагрузкой не хуже, если не лучше, чем Apache2. Единственным реальным недостатком для меня является документация.
Если на устройстве действительно мало ресурсов, рассмотрите встроенную библиотеку веб-сервера, например Mongoose или libsoup (с использованием GLib). Однако обратите внимание, что такие службы, как анализ SOAP и XML, в целом довольно требовательны к ресурсам.