- •Интернет, как источник информации для разработки пакета программ для курса программирования и основы алгоритмизации
- •Гл2. Интернет, как источник информации для разработки пакета программ для курса программирования и основы алгоритмизации
- •Глава 1 Cправка языков программирования
- •§1 Справка языков программирования
- •§2 Историческая справка развития Delphi
- •Целевая платформа
- •История языка
- •Компиляторы
- •Синтаксис языка Операторы
- •Выражения
- •Типы данных
- •Объекты
- •§3 Обзор методов алгоритмов
- •1.3. Основные этапы полного построения алгоритма
- •2.Построение модели
- •3.Правильность алгоритма
- •4.Реализация алгоритма
- •5.Анализ алгоритма и его сложности
- •§4 Программа Delphi, обьектно-ориентированное программирование
- •Краеугольные камни ооп Формула объекта
- •Природа объекта
- •Объекты и компоненты
- •Классы объектов
- •Три кита ооп
- •Объекты
- •Конструкторы и деструкторы
- •Свойства Понятие свойства
- •Методы получения и установки значений свойств
- •Свойства-массивы
- •Свойство-массив как основное свойство объекта
- •Методы, обслуживающие несколько свойств
- •§5 Общая структура пакета программирования и алгоритмитизации
- •1. Алгоритмизация и алгоритмы
- •1.1 Понятие алгоритмизации и алгоритмов
- •1.2 Свойства алгоритмов
- •2. Программирование
- •2.1 Понятие программирования
- •2.2 Понятие компьютерной программы
- •§6 Инструкция для Программы htm2chm
- •Введение
- •Эволюция средств разработки Web приложений в Delphi Средства разработки Internet-приложений §1. Средства разработки Internet-приложений из состава Borland Kylix
- •§2 Средства разработки Internet-приложений из состава Borland Delphi 6
- •§3. Форматы приложений для web
- •§5. Разработка web приложения
- •П2. Использование шаблонов
- •§6. Первый проект
- •П2 Использование tAdapter
- •П3. Работа с базами данных
- •§7. Использование Web Services
- •П2. Протокол soap
- •П3. Разработка сервера Web Services в Delphi6
- •П4. Описание интерфейса сервера
- •П5. Реализация методов сервера
- •П6. Создание проекта приложения Web Services в Delphi
- •П7. Разработка клиента Web Services в Delphi6
- •Заключение
§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 страницы, а воспользовавшись компонентами доступа к данным, и отображать данные из БД, однако, как говорится, есть способ лучше.