На этом шаге мы рассмотрим какими могут быть форматы Web-приложений .
Получив запрос, приведенный на предыдущем шаге, сервер должен отправить клиенту ответ. Но между этими событиями, конечно, должен пройти процесс разбора запроса и приготовления ответа клиенту, процесс, иногда, не очень простой.
В простом варианте, клиент может запрашивать готовый документ HTML, указав его по имени. В рассматриваемом же нами примере, клиент посылает запрос приложению myscript.dll. Сервер Web должен "понять", что требуется выполнить это приложение и передать ему параметры запроса. Способ передачи данных приложению Web-сервера зависит от типа серверного приложения.
Таким образом, Web-приложения - это программы, которые по запросам Web-сервера готовят страницы HTML для последующей передачи их клиентскому браузеру. Существуют пять форматов Web-приложений: CGI, WinCGI, ISAPI, NSAPI и Apache. При работе с Delphi для каждого формата создается объект TXXXApplication, который осуществляет общее управление приложением, и объекты TxxxRequest - TxxxResponse: в первом приложению передается запрос пользователя, во втором оно возвращает свою реакцию на этот запрос.
1. CGI/WinCGI
Формат CGI (Common Gateway Interface - общешлюзовой интерфейс) - это консольная программа, загружаемая Web-сервером при каждом запросе клиента и выгружаемая сразу после завершения работы. Такое приложение получает данные запроса и помещает результат его обработки в стандартный поток ввода/вывода. WinCGI - это Windows-реализация формата CGI. Вместо стандартного потока ввода/вывода она обменивается с Web-сервером информацией в файлах инициации INI. Кроме того, она может в полной мере использовать графический интерфейс пользователя GUI. Во всем остальном программа WinCGI подобна программе CGI. Программы CGI/WinCGI работают под управлением объекта TCGIApplication, который создает объекты TCGIRequest - TCGIResponse или TWinCGIRequest - TwinCGIResponse в зависимости от типа приложения.
2. ISAPI/NSAPI
Приложения ISAPI (Internet Sever API) и NSAPI (Netscape Server API) всегда реализуются в виде DLL, которые подключаются к основному процессу сервера и с помощью соответствующих функций API взаимодействуют с ним. Такие приложения становятся как бы частью соответствующего сервера, обеспечивая наиболее быструю обработку запроса. Однако ошибочное Web-приложение в виде DLL может разрушить сервер, что предъявляет повышенные требования к их тестированию.
Наличие нескольких вариантов Web-серверов и соответствующих наборов API до недавнего времени сдерживало разработку таких приложений. Однако используемый в Delphi механизм Web Bridge позволяет создавать Web-приложения, одинаково хорошо работающие с двумя самыми популярными серверами (IIS и NS). Эти приложения работают под управлением объекта TISAPIApplication, который создает объекты TISAPIRequest и TISAPIResponse.
3. Apache
Свободно распространяемый для платформы Linux сервер Apache требует разработки обслуживаемых им приложений в формате DLL. Эти приложения работают в отдельных потоках команд под управлением объектов TApacheApplication, TApacheRequest и TApacheResponse.
Как создается новое приложение сервера Web, вы уже знаете. Для этого нужно выполнить команды меню File | New | Other... и в окне диалога New Items выбрать вариант Web Server Application. Затем, в следующем окне нужно выбрать модель приложения: ISAPI или NSAPI, CGI или Win-CGI. После этого вы получите проект серверного приложения, который включает два объекта: модуль Web и приложение сервера Web.
На следующем шаге мы рассмотрим, что такое Web-модуль.