Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gabdullina_Alina_kursovaya.doc
Скачиваний:
16
Добавлен:
23.08.2019
Размер:
1.54 Mб
Скачать

§3. Форматы приложений для web

Формат приложения

Описание

Microsoft Server DLL (ISAPI), Netscape Server DLL (NSAPI)

Web приложение представляет собой dll, которая загружается Web сервером в память. Запросы клиентов обрабатываются в отдельных потоках. ISAPI работает на Web сервере IIS (от Microsoft), NSAPI - на сервере Netscape

Apache Server DLL

Динамический модуль Web сервера Apache. На платформе Windows - dll. Приложение взаимодействует с ядром Apache через специальный API. Запросы клиентов обрабатываются в отдельных потоках. Приложения данного типа с помощью перекомпиляции в Kylix могут быть перенесены на платформу Linux.

Stand alone CGI

Консольные приложение, получающее запросы клиента через стандартный поток ввода и выдающий результат в стандартный поток вывода. Запросы клиента выполняются отдельным экземпляром приложения. Поддерживается практически всеми Web серверами. Приложения данного типа с помощью перекомпиляции в Kylix могут быть перенесены на платформу Linux.

Windows CGI application

Приложение Windows, получающее запросы через ini файл, создаваемый Web сервером и записывающее результаты работы в файл, который Web сервер передает обратно клиенту.

Web debugger application

Web debugger - это специальная программа в составе Delphi 6, которая эмулирует работу Web сервера. Позволяет проводить мониторинг работы приложения. Используется для отладки приложений. После отладки приложение должно быть конвертировано в один из вышеописанных форматов.

§4. Web Broker

Данная технология появилась еще в 4-ой версии Delphi. Назначение технологии - разработка приложений, расширяющих возможности существующих Web серверов. Разработка приложений в данной технологии сводится к определению возможных запросов пользователя и написании обработчиков этих запросов. К достоинствам технологии можно отнести переносимость на Kylix и простоту. Недостатки - фактически невизуальный процесс разработки приложения. Компоненты, относящиеся к данной технологии, расположены на закладке Internet IDE Delphi.

§5. Разработка web приложения

П1. Начальный этап

В IDE Delphi выберем пункт меню File/New/Other. В появившемся диалоге на закладке New выберем пункт Web Server Application. Нам будет предложено выбрать формат создаваемого приложения.

Выберем пункт Web App Debuger executable и в поле ввода CoClassName введем HelloWebApp. Delphi сгенерирует нам заготовку проекта. В состав проекта будет входить: " Unit1.pas - в нем описывается форма From1. Форма не несет никакой функциональной нагрузки в приложении. Ее наличие вызвано особенностями реализации Web App Debuger. " Unit2.pas - модуль, содержащий описание Web Module - центрального элемента нашего приложения. Тут самое время рассказать о структуре приложения Web Broker.

Web приложение, получив запрос от сервера создает объект типа TwebRequest, содержащий параметры клиентского запроса и объект типа TWebResponse, который будет содержать запрошенную информацию. Затем эти объекты передаются диспетчеру (Web модулю или компоненту TWebDispatcher, если отсутствует Web модуль). Диспетчер анализирует параметры поступившего запроса и вызывает обработчик, определенный программистом для данного запроса (Action Item). Обработчик отвечает за заполнение ответа данными. В обработчике для получения запрошенных клиентом данных могут использоваться компоненты, генерирующие динамическую информацию на основе заданного шаблона и поступивших в запросе данных (Content producer). По окончании работы обработчика диспетчер передает данные (Web Response) веб серверу, а тот в свою очередь клиенту.

Теперь, вооруженные теорией, вернемся к практике. Очевидно, что нам необходимо определить в Web модуле хотя бы один обработчик события. Для этого правой кнопкой мыши щелкнем на нашем модуле и в контекстном меню выберем пункт Action Editor. Перед нами появится окно редактора обработчиков. Кнопкой "Add New" добавим новый обработчик WebActionItem1.

В Инспекторе объектов установим следующие свойства обработчика: Default - использовать обработчик по умолчанию - true. В этом случае обработчик вызывается если нет явного обработчика запроса с данными параметрами. Можно назначить один обработчик по умолчанию для Web модуля. PachInfo - путь обработчика, часть URL адреса после имени программы, за разбор которого осуществляет данный обработчик. Так ,например, для обработки URL http://localhost/cgi-bin/Project1.exe/mypath, св-во PathInfo обработчика должно быть /mypath. Для нашего случая установим данное св-во в значение "/". Далее необходимо написать код обработчика, для этого в обработчике события OnAction WebActionItem1 введем следующий код: Response.Content:='Hello,world !'; Запустим на выполнение созданное приложение (F9). На экране появится форма Form1. В IDE Delphi выберем пункт меню Tools/Web App Debuger, при этом на экране появится главная форма отладчика.

После нажатия кнопки "Start" надпись http://localhost:1024/… подсветится синим. Левой кнопкой мыши выберем эту надпись при этом будет запущен Web броузер и в его окне выведен список приложений, доступных для отладки. В списке выберем пункт Project1.HelloWebApp (наше приложение) и нажмем кнопку Go. В окне броузера мы увидим результат работы нашего приложения - "Hello, world!". Присмотревшись к коду обработчика события OnAction WebActionItem1, мы видим, что содержание ответа формируется "вручную". При этом очень часто приходится анализировать поля переменных классов TWebResponse и TWebRequest. Ниже приведено описание и назначение наиболее часто используемых полей данных классов.

Поле

Тип

Описание

TWebRequest

Host

String

Имя сервера, на котором выполняется скрипт

ScriptName

String

URL путь к скрипту

Request.Method

String

Метод вызова скрипта

RemoteAddr

String

Имя компьютера, вызвавшего скрипт

UserAgent

String

Пользовательский браузер

ContentFields, QueryFields

TStrings

Параметры и их значения, переданные запросу

TWebResponse

Server

String

Вид веб сервера

ContentType

Sting

Тип содержимого страницы

Content

String

Ответ, сформированный скриптом

ContentStream

TStream

Ответ, сформированный скриптом. Используется в случае передачи двоичных данных

В качестве иллюстрации использования описанных полей приведу следующий код обработчика OnAction WebActionItem1:

Response.Content:='<HTML><BODY> Host:'+Request.Host+'<br>'+

'Скрипт: '+Request.ScriptName + '<br>'+

'Метод: '+Request.Method+'<br>'+

'Remote address: '+Request.RemoteAddr+'<br>'+

'Броузер: '+Request.UserAgent+'<br>';

if Request.ContentFields.Count > 0 then

begin

Response.Content:=Response.Content+'Параметры:<br>Кол-во:'+

IntToStr(Request.ContentFields.Count)+'<br>';

for Cnt:=0 to Request.ContentFields.Count-1 do

begin

Response.Content:=Response.Content+Request.ContentFields[Cnt]+'<br>';

end;

end else

begin

Response.Content:=Response.Content+'Параметры:<br>Кол-во:'+

IntToStr(Request.QueryFields.Count)+'<br>';

for Cnt:=0 to Request.QueryFields.Count-1 do

begin

Response.Content:=Response.Content+Request.QueryFields[Cnt]+'<br>';

end;

end;

Response.Server:='Our soft';

Response.Content:=Response.Content+'Веб сервер: '+Response.Server+'<br>';

Response.Content:=Response.Content+'Тип содержимого: '+Response.ContentType+'<br>';

Response.Content:=Response.Content+'<BODY/></HTML>';

Пользуясь данной методикой, можно создавать динамические html страницы, а воспользовавшись компонентами доступа к данным, и отображать данные из БД, однако, как говорится, есть способ лучше.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]