Web Сервер системы Miracle является, наверное,
одним из самых маленьких, но при этом достаточно функциональным.
Поддерживается протокол HTTP/1.0, некоторые расширения
протокола HTTP/1.1 (например, докачка), CGI,
Miracle, Cookie и метод POST в CGI
и Miracle.
|
Не поддерживается SSL.
|
Частичная поддержка SSI. Сервер состоит из одного
исполняемого модуля - MirWeb.exe, который можно запускать
из любого каталога, указав в качестве рабочего тот, где расположены
файлы HTML. Там-же (если не задано иного в файле инициализации)
создается файл MirWeb.log, в котором отражается протокол
запросов на сервере в формате CSV. Если файл инициализации
не задан в командной строке, то он ищется тоже там.
SSI
Имеется поддержка замены подстрок вида '<!--#include
file=' на содержимое указанных в них файлов (относительно
рабочего каталога Web сервера). Так-же можно задать строку
'<!--#include virtual=', отличие которой от file
заключается в том, что файл ищется относительно текущей
страницы.
CGI
Поддержка CGI осуществляется очень просто - достаточно просто сделать
автоматическую ассоциацию расширения файла с требуемым
приложением.
Если файл является запускаемым (например EXE
или BAT), то он будет запущен непосредственно. Проверена
работа таких распространенных интерпретаторов скриптов, как
Perl и PHP.
Miracle.
Сервер осуществляет поддержку виртуальных страниц,
созданных не только через CGI, но и с помощью специальных
объектов системы Miracle.
Работа Web Сервера системы Miracle обеспечивает
взаимодействие с miracle-приложениями по следующей схеме.
Каждое запущенное miracle-приложение имеющего
компонент взаимодействия с
Web сервером, устанавливает связь с сервером. Если в рамках
настройки компонента установлен флаг - "Публиковать", то данное
приложение будет доступно для по адресу: "http://<адрес
к Web серверу>/miracle/". Если флаг не установлен,
то доступ к страничке создоваемое активным приложением, будет
доступен только через явно указание ссылки. Обычно это служит
для организации набора виртуальных страниц с поддержкой переходов.
|
Следует помнить, что наличие файлов в директории
miracle/ "footer.htl" и "header.htl",
задают стиль оформления страницы содержащей активный
список доступных виртуальных WEB-страниц обеспечиваемых
запущенными miracle-приложениями. Структура данных файлов
должна быть согласована таким образом, что бы фрагменты
html кода общей страницы обеспечивала необходимую структуру
заголовка страницы - "footer.htl", наполнение, генерируемое
автоматически Web сервером, а так же окончание страницы
- "header.htl". |
Обработка запросов между Web сервером и miracle-программой
строиться следующим образом:
Запущенное miracle-приложение имеющего
компонент взаимодействия с Web сервером, регистрирует
виртуальную страничку описанную в компоненте. Если страница
предназначена для публикации, то Web сервер перегенерирует
"список приложений".
-
Если происходит запрос к "виртуальной
страничке", то Web сервер обращается к соответствующей
miracle-программе. Если приложение "не отвечает", например
оно обрабатывает предыдущее обращение, то сервер организует
очередь.
Если запущено несколько копий этой miracle-программы,
то сервер пытается передать запрос первой "свободной"
из них. Если этого не удается, то организуется очередь.
-
Приложение, получившее запрос от Web сервера
должно подготовить "ответ".
Т.е. в рамках miracle-программы возникает событие "Поступил
GET(/par)/POST запрос от Web сервера.", Web
сервер начинает ждать ответа от программы и до этого
момента считает данную копию приложения "занятой".
-
Приложение осуществляет подготовку ответа.
Например: заполненяет информацией структуру странички
из базы данных и т.п.
Далее приложение должно "Отправить ответ - ошибку/ответ
для Web сервера", либо осуществить перенаправление
на другой адрес (web страничку).
-
Web сервер получив ответ от miracle-программы,
считает данную копию доступной для нового запроса, если
была очередь, то передает новый запрос к программе.
А так же осуществляет отправку подготовленного ответа
пользователю в Сети.
Если в рамках настройки компонента "Взаимодействие
с Web Server", установлен флаг #inclide,
то пред отправкой ответа, сервер организовывает формирование
дополнений в структуру web страницы подготовленной miracle-программой.
Что приводит к замедлению отправки ответа, однако
позволяет осуществлять "компиляцию" полной структуры
ответа на уровне Web-сервера, через внедрение части
html кода имеющихся на Web сервере.
|