G-WAN — это аккуратный веб-сервер: он основан на концепции «скриптов C»:
Сценарий C — это просто исходный код C, который компилируется веб-сервером, а затем загружается в защищенную память. Он будет вызываться веб-сервером, когда будет сделан запрос к сервлету. Сервлет, скомпилированный компилятором C, "так же быстр", как и обычная компиляция программы C. Однако преимущество сценариев C перед, например, CGI или FastCGI заключается в том, что скомпилированная программа находится в том же пространстве памяти, что и веб-сервер. Это уменьшает накладные расходы на связь (либо путем создания процесса, в случае CGI, для каждого запроса, либо сокета для FastCGI).
Веб-сервер использует метод выбора/опроса: неблокирующий ввод-вывод. Тем не менее, есть опрятная вещь. Каждая программа может быть написана так, как если бы она использовала блокирующий ввод-вывод. Поскольку веб-сервер сам компилирует каждый сценарий C, он может преобразовать программу для использования неблокирующего ввода-вывода. Благодаря этому он может связываться со сторонними библиотеками (например, доступ к базе данных) и по-прежнему использовать неблокирующий характер ввода-вывода: без переключения контекста потока/процесса.
Инструменты, предоставляемые для программирования сценариев C, — это, например, кэширование и безопасные буферы. Следующая (еще не выпущенная на момент написания этого поста) версия также будет включать хранилище ключей и значений.
С точки зрения производительности: есть несколько доступных тестов, показывающих, что он превосходит любой другой веб-сервер, однако я им не доверяю. Попробуйте написать небольшую программу, интенсивно использующую процессор, на C и, например, на PHP. Пусть сценарий C работает в G-WAN, а сценарий PHP — в Apache, а сами выполните тест производительности.
Это еще не все, но это выходит за рамки этого вопроса.
Некоторыми недостатками G-WAN является то, что он разработан только одним человеком. Но есть форум, где можно задавать вопросы.
Простота использования ограничена вашими навыками в C. Однако предоставленный API прост. В нем все еще есть некоторые несоответствия и (на мой взгляд) некрасивые детали, но это не проблема. Более серьезная проблема заключается в том, что не гарантируется совместимость каждой версии с предыдущими версиями, и вам, возможно, придется переписать ее.
Если вы хотите быть в безопасности: используйте независимость C от платформы: разрешите компилировать ваш код в программы (Fast)CGI, а также использовать G-WAN. В случае сбоя G-WAN вы всегда можете вернуться к Apache (Fast)CGI (см. http://www.fastcgi.com/ для API).
person
Pindatjuh
schedule
23.06.2011