(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Разработка приложений для Apache с помощью Kylix Server Developer

Colin A.Ridgewell

Оглавление

Введение

Kylix является средством разработки от Borland, обеспечивающим операционную систему Linux собственным RAD-инструментарием (Rapid Application Development - быстрая разработка приложений). Он основывается на получившем широкое признание RAD-инструменте Delphi. Итак, почему же стоит использовать Kylix для платформы Linux? Если Linux применяется в качестве основной платформы, то возникает необходимость решения проблем, связанных с переносом приложений. Инструмент Kylix был создан как раз для того, чтобы переносить такие оригинальные приложения. Традиционные инструменты Linux, подобные GCC (GNU-компилятор) и Emacs, являются инструментами системного уровня и могут использоваться для решения таких задач, как перекомпиляция ядра или разработка драйверов устройств; однако, они не могут решать проблемы совместимости приложений.

Возможность разработки динамических (и зачастую управляемых данными, извлекаемыми из баз данных) web-приложений на базе Apache может оказаться ключевым моментом в успешном использовании Linux самыми различными организациями. Раньше разработчикам приходилось использовать традиционные технологии создания сценариев, но теперь Kylix Server Developer привнес в разработку ПО для Apache собственный высокопроизводительный RAD-инструментарий, включающий компонентную среду для визуального программирования. Kylix упрощает и ускоряет разработку web/Internet-приложений на базе Apache для платформы Linux, позволяя разрабатывать масштабируемые многопользовательские web-приложения, поддерживающие работу с большими объемами данных.

Ниже приведен список характерных черт Kylix, доступных при разработке е-бизнес, web- и Internet-приложений на базе Linux.

  • Собственный высокопроизводительный компилятор и отладчик объектов ELF-формата со скоростью компиляции около 4 миллионов строк в минуту.
  • Двусторонняя интегрированная среда разработки (IDE) разработки позволяет создавать сложные приложения в Linux быстрее, чем любое другое средство разработки.
  • Независимость от пользовательского интерфейса. Приложения будут прекрасно работать под KDE, GNOME, а в случае web-приложения - вообще без интерфейса. Это означает, что разработчику не придется ограничивать пользователя приложения использованием только определенного интерфейса.
  • CLXTM (кросс-платформенная компонентная библиотека) поддерживает компонентную структуру так же, как и VCL (визуальная компонентная библиотека) для Delphi и C++BuilderTM . CLX поддерживает совместимость исходного кода приложений между Windows и Linux.
  • Кросс-платформенная архитектура web-серверных приложений NetCLXTM сочетает в себе простоту визуальной разработки с преимуществами компонентного подхода.
  • DataCLXTM и dbExpressTM (кросс-платформенный API базы данных) сокращают время разработки, благодаря отсутствию необходимости программировать интерфейсы к API баз данных с использованием собственных драйверов OracleÒ , IBM DB2Ò , MySQLTM , InterBaseÒ .
  • Открытый (open-source) проект Indy-компонентов поддерживает более 65 компонентов, обеспечивая возможность установления связи между Internet-узлами как для клиентских, так и для серверных приложений.

Linux - это многофункциональная и многообещающая операционная система, особенно для разработки и поддержки web-серверов.

Ключевым моментом в интеграции бизнес-систем на платформе Linux можно назвать создание динамического web- контента, интегрирующего базу данных предприятия с Internet или Intranet. В настояще й статье показано, как легко можно интегрировать web-приложения электронной коммерции с собственной базой данных, используя Kylix Server Developer от Borland для разработки приложений для web-сервера Apache под Linux. Приведен также ряд практических примеров. Если Вы являетесь опытным разработчиком под Apache или на Delphi, не знакомым с Linux, в этой статье Вы найдете много полезной для себя информации.

Разработка Web-приложений в KylixTM

Kylix уникален тем, что позволяет разработчику выбирать, каким образом тот хочет разрабатывать приложения для web-серверов Apache, с помощью CGI или DSO (Динамические разделяемые объекты). На рисунке 1 представлено диалоговое окно мастера ‘web Server Application’, доступное путем выбора File / New из основного меню. С этого места разработка любого из указанных вариантов приложений будет одинаковой: код проекта генерируется Kylix-инструментарием в соответствии с Вашим выбором.

Рисунок 1. Диалоговое окно нового мастера web-серверных приложений

Код NetCLX-приложений в Kylix будет совместим с Delphi 6, который сможет компилировать расширения для ISAPI, NSAPI и win-CGI не только для Apache, но и для других web-серверов. Такая совместимость кодов стала возможной, благодаря общей NetCLX-архитектуре, используемой для построения web-приложений. NetCLX-архитектура также является независимой от web-сервера, поэтому разработчику нет необходимости знать всю глубинную специфику реализации web-сервера.

Web-сервер ApacheTM

Самым популярным программным обеспечением для web-серверов на базе Linux является Apache. Конечно, это один из самых часто используемых в мире web-серверов не только для Linux, но и для таких платформ, как Windows и Unix. Однако, было подсчитано, что около 35% общедоступных web-серверов используют web-сервер Apache под Linux ( www.netcraft.com ). Apache вырос из проекта ‘NSCA httpd’, разработанного Национальным центром по применению суперкомпьютеров в Иллинойсе. Ряд авторов, писавших части программы для NSCA httpd, объединились и образовали группу Apache ( http://www.apache.org ), названную так по аналогии с первоначальным названием ‘A Patchy Server’. Первый официальный выпуск (0.6.2) сервера Apache появился в апреле 1995 года. Теперь - это открытая компания, известная уже под названием Apache Software Foundation, разрабатывающая некоммерческие проекты Apache.

Создание CGI-приложений для web-сервера Apache с использованием примера WebBrokerTM

Давайте посмотрим, как использование Kylix упрощает создание собственных web-серверных приложений для платформы Linux. В первом примере будет создаваться простое CGI web-приложение, которое может использоваться для посылки email-сообщений из web-браузера. Оно будет генерировать начальную HTML-форму, в которую пользователь должен внести всю необходимую информацию и вернуть ее обратно серверному приложению. Затем на базе этой информации web-приложение создаст и отправит email-сообщение.

Сначала выберите элемент File / New из основного меню Kylix, затем опцию CGI в появившемся диалоговом окне мастера приложений для web-сервера (см. Рисунок 1). Kylix создаст новое ‘non GUI’- консольное приложение всего с одним модулем, WebModule (см. Рисунок 2). Модуль WebModule обрабатывает все запросы, приходящие от web-сервера; именно в него Вы можете поместить все невизуальные генерирующие контент компоненты web-приложения.

Рисунок 2. Пустой WebModule.

Теперь выберите из закладки Internet в палитре компонентов (см. Рисунок 3) элемент TPageProducer и установите его в WebModule (см. Рисунок 4). TPageProducer являются очень мощными компонентами, обеспечивающими связь между запросами от клиентского браузера, обработкой, выполняемой Вашим приложением, и динамически генерируемым контентом, которое приложение посылает в ответ на запрос клиента. Для email-формы, установите свойство HTMLDoc на требуемый HTML с помощью Object InspectorTM (см. Рисунок 5). Используемый HTML создается отдельно и устанавливается как свойство HTMLDoc. Kylix поддерживает разделение между уровнем доступа к данным, уровнем приложения и уровнем представления, что облегчает повторное использование кода и ускоряет процесс разработки. Вы можете устанавливать HTMLDoc, как и все остальные признаки, во время работы приложения. Обратите внимание, что, при использовании Object Inspector, признак PageProducer Name изменился на ‘EmailForm’ (см. Рисунок 6).

Рисунок 3. Закладка Internet в наборе компонентов.

Рисунок 4. WebModule с PageProducer.

<html>
<body bgcolor="#CCCC99">
<form method="post" action="/cgi-bin/emailform"><br>
E-mail address<br>
<input type="text" name="address" size="50"><br> Message<br>
<input type="text" name="message" size="50"><br> <br>
<input type="submit" name="Submit" value="Send e- mail">
</form>
</body>
</html>

Рисунок 5. HTML для простой email-формы.

Рисунок 6. Object Inspector.

Теперь выберите из закладки Internet в палитре компонентов (см. Рисунок 3) элемент TPageProducer и установите его в WebModule (см. Рисунок 4). TPageProducer являются очень мощными компонентами, обеспечивающими связь между запросами от клиентского браузера, обработкой, выполняемой Вашим приложением, и динамически генерируемым контентом, которое приложение посылает в ответ на запрос клиента. Для email-формы, установите свойство HTMLDoc на требуемый HTML с помощью Object InspectorTM (см. Рисунок 5). Используемый HTML создается отдельно и устанавливается как свойство HTMLDoc. Kylix поддерживает разделение между уровнем доступа к данным, уровнем приложения и уровнем представления, что облегчает повторное использование кода и ускоряет процесс разработки. Вы можете устанавливать HTMLDoc, как и все остальные признаки, во время работы приложения. Обратите внимание, что, при использовании Object Inspector, признак PageProducer Name изменился на ‘EmailForm’ (см. Рисунок 6).

Рисунок 7. Список действий WebModule с присвоенным действием по умолчанию.

Каждое приложение WebBroker поддерживает список ‘действий’. Эти ‘действия’ выполняются, когда HTML-запросы соответствуют свойствам MethodType и PathInfo какого-либо из перечисленных действий. Если ни одно запрошенное действие не соответствует действиям, сконфигурированным в Вашем приложении, то может назначаться действие по умолчанию (см. Рисунок 7). Назначение действия по умолчанию - это простейший способ удостовериться в том, что Ваше web-серверное приложение всегда имеет возможность послать какой-то понятный ответ пользователю, не создавая впечатления недоступности сайта.

Это может быть достигнуто следующим образом. Выберите WebModule; в Object Inspector отобразятся его свойства. Затем щелкните мышью по кнопке Actions; откроется Action Editor. Щелкнув по значку New Action в Action Editor, добавьте действие в WebModule и установите его свойство Default на ‘True’ с помощью Object Inspector. После этого, установите его свойство PathInfo на ‘/EMailForm’, а свойство Producer на ‘EmailForm’ PageProducer (см. Рисунок 7). Теперь, данное web-приложение будет по умолчанию возвращать email-форму клиенту браузера в случаях, когда целевой URL установлен как ‘EMailForm’.

Теперь следует добавить другое Action (действие) для обработки запроса ‘Send e-mail’ при нажатии кнопки на HTML-форме (см. Рисунок 8). Обратите внимание, что действие выполняется, когда установка mtPost в свойстве MethodType соответствует методу HTML-формы email-сообщения.

Рисунок 8. Список действий WebModule с добавленным действием mtPost.

В WebModule добавляется компонент TIdSMTP (см. Рисунок 9). Это один из наиболее мощных Internet-компонентов набора Indy, включенного в Kylix. Данный компонент может использоваться для посылки email-сообщения посредством SMTP на почтовый сервер, в нашем случае, на локальный sendmail MTA-сервер. Все это можно записать одной строкой кода.

Рисунок 9. WebModule с добавленным компнентом TIdSMTP из набора Indy.

Обработчику событий OnAction для выполнения действия по отправке email-сообщения требуется определенная информация. Чтобы отправить email-сообщение с помощью компонента TIdSMTP, он должен прочесть значения адреса и сообщения из формы, посланной в HTTP-запросе (см. Рисунок 10).

procedure

TWebModule1.WebModule1Actions2Action(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean); begin try IdSMTP1.QuickSend
( 'localhost', 'subject', Request.ContentFields.Values['address'],

'anonymous@web.site',

Request.ContentFields.Values['message'] ); Response.Content := 'Successfully
sent e-mail'; except On E:Exception do Response.Content := 'Error sending e-mail<br>'
+ E.Message; end; end;

Рисунок 10. Метод OnAction для отправки e-mail.

Это полный код приложения. Чтобы приложение работало с web-сервером Apache, необходимо скомпилировать проект и скопировать полученный исполняемый файл в каталог /cgi-bin web-сервера Apache. Вы можете выбрать элемент Projects / Options… из основного меню, затем выбрать закладку Directories и установить Output path, ведущий к вашему каталогу /cgi-bin. Вся информация, связанная с конфигурацией web-сервера Apache находится в файле httpd.conf (конфигурация демона http). В этот файл нужно ввести некоторые дополнительные данные (см. Рисунок 11). Обратите внимание, что в Вашем файле httpd.conf уже может находиться запись Directory для /cgi-bin. В этом случае, нет необходимости в ее повторном вводе; просто проверьте, чтобы установки совпадали с теми, которые показаны на рисунке 11. Помните также, что в зависимости от используемой версии Linux путь к Вашему каталогу /cgi-bin может быть другим.

<Directory /usr/local/apache/cgi-bin> AllowOverride None Options ExecCGI

Order allow,deny Allow from all </Directory>

SetEnv LD_LIBRARY_PATH /opt/kylix/bin SetEnv LANG en_US

Рисунок 11. Записи в httpd.conf, необходимые для выполнения Kylix CGI-web-приложения на сервере Apache.

Так как для выполнения Kylix CGI-web-приложения на web-сервере Apache используются файлы Kylix bin.so (разделяемый объект), необходимо установить переменные окружения LD_LIBRARY_PATH и LANG. Команда SetEnv устанавливает переменную окружения, которую Apache передает во время выполнения CGI-приложению.

Владельца, группу и полномочия для файлов Kylix .so (разделяемый объект) и исполняемого файла CGI-web-приложения следует установить в соответствии с требованиями Apache. Для Apache обычно устанавливается тот пользователь и группа, которые Apache использует для всех web-запросов. Команды User и Group Вы можете найти в своем файле httpd.conf. Таким образом, любое лицо, подсоединившееся к Вашему web-серверу, оперативно регистрируется на нем как пользователь. Для того, чтобы такой пользователь мог использовать Kylix CGI-web-приложение, оно должно быть разрешено для доступа и исполнения пользователем Apache. Для обеспечения максимальной безопасности сервера, пользователь Apache должен иметь минимальные права.

Например, если Ваш пользователь Apache установлен как ‘apache’ в группе ‘apache’, и Вы создаете Kylix CGI-wweb-приложение с именем ‘emailform’, то для того, чтобы Ваше web-приложение стало доступным, возможно, потребуется ввести команды, показанные на рисунке 12. Имейте в виду, что для этого Вам, возможно, потребуется зарегистрироваться как Администратору.

cd <your cgi-bin directory> chown apache emailform chgrp apache emailform chmod 755 emailform

Рисунок 12. Установка владельца и группы для приложения CGI 'emailform', чтобы оно могло выполняться на Apache.

Все вышесказанное действительно и для разделяемых объектов в Kylix /bin-каталоге: возможно, потребуется изменить владельца, группу и привилегии. Для ‘реального’ web-сайта, мы рекомендуем скопировать требуемые дистрибутивы в Kylix /bin-каталоге из среды разработки в реальную среду. Затем Вы можете установить владельца, группу и привилегии, а также установить LD_LIBRARY_PATH к этому каталогу в соответствии с требованиями к безопасности своего web-сервера Apache.

На Рисунках 13 и 14 показано, как web-приложение выполняется на броузере, в данном случае, на KDE Konqueror. Учтите, что здесь может использоваться любой другой броузер.

Рисунок 13. Выполнение web-приложения 'emailform' в браузере: перед отправкой email-сообщения.

Рисунок 14. Выполнение web-приложения 'emailform' в браузере: после отправки email-сообщения.

Попытайтесь сами повторить всю описанную процедуру. Вы убедитесь в ее высокой функциональности и увидите, что нет ничего проще и быстрее, чем создание собственных CGI-web-приложений для Apache на платформе Linux с помощью Kylix.

Использование архитектуры NetCLXTM

NetCLX поддерживает кросс-платформенную архитектуру web-серверных Internet-приложений, которая соответствует стандартам HTTP. NetCLX-архитектура является серверо-независмой, благодаря извлечению и инкапсуляции этих HTTP-стандартов в структуру стандартных классов. Kylix и NetCLX делают возможной поддержку типичных для Apache DSO- (Динамические разделяемые объекты) и CGI -приложений.

Kylix NetCLX-приложения будут совместимы по исходному коду с Delphi 6, которая может компилировать расширения для ISAPI, NSAPI и win-CGI для других web-серверов. Это позволит разработчикам создать единый базовый исходный код для скомпилированных в различных средах разработки, предназначенных для самых разных рынков.

Важно хорошо знать значимые классы объектов, составляющие NetCLX-архитектуру. Эта архитектура поддерживает структуру Ваших web-приложений, позволяя Вам сосредочиться на ‘бизнес-контенте’, а не на технических деталях и сложностях приложения, которое выполняется на web-сервере.

Класс TWebDispatcher

TWebDispatcher является ядром любого web-приложения; это класс, который включается в web-сервер. В каждое приложение можно добавлять только по одному web-диспетчеру. Он предназначен для приема HTTP-запросов и передачи их в соответствующие методы ‘действий’ обработчиков событий; после этого, web-диспетчер компонует контент и возвращает его в виде ответа. Затем TWebDispatcher отравляет ответ клиенту. Действия хранятся в виде набора TwebActionItem. На рисунке 15 показаны наиболее значимые свойства TWebDispatcher.

Property Actions: TWebActionItems; Property Request: TWebRequest; Property Response: TWebResponse;

Рисунок 15. Значимые признаки TWebDispatcher.

WebModule

WebModule инкапсулирует, создает и управляет модулем приложения TWebDispatcher, поддерживая через Object Inspector интерфейс на время разработки для TWebActionItem и событий уровня приложения (см. Рисунок 16). Кроме того, Вы можете установить в WebModule любые не-визуальные компоненты, такие как TIdSMTP-компонент, использованный в первом примере приложения.

Property AfterDispatch; Property BeforeDispatch; Property OnCreate; Property OnDestroy; Property OnException;

Рисунок 16. Обработчики событий в WebModule.

Класс TwebActionItem

TwebActionItem используется для ответа на определенный тип HTTP-запроса, определенный в пути URL и в методе HTTP-запроса. TWebDispatcher выбирает для HTTP-запроса соответствующее действие или действия, сравнивая путь URL и тип метода со свойствами PathInfo и MethodType. Используя свойство Producer, Вы можете присоединить любой генератор контента (producer) в TwebActionItem. Генератор формирует HTTP-ответ для действия; в противном случае, сам разработчик может закодировать метод обработчика событий OnAction. На рисунке 17 показаны наиболее значимые признаки TWebActionItem.

Property Default: Boolean; Property Enabled: Boolean; Property MethodType:
TMethodType; Property PathInfo: String; Property Producer: TCustomContentProducer;

Property OnAction;

Рисунок 17. Значимые признаки и события класса TWebActionItem.

HTTP-запрос и ответ объединяются в пару и передаются генератору контента или обработчику событий OnAction в виде объектов TWebRequest и TWebResponse. На рисунке 18 приведен заголовок для метода обработчика событий OnAction.

procedure

TWebModule1.WebModule1Actions1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

Рисунок 18. Заголовок метода обработчика событий OnAction в TWebActionItem.

Класс TWebRequest

TWebRequest является базовым классом для всех объектов, представляющих клиентские запросы, которые передаются в web-серверное приложение. TWebDispatcher создает TwebRequests для сбора клиентских запросов.

Он полностью собирает все возможные запросы, которые могут придти на web-сервер, включая Cookie, значения полей и кодовые страницы, значения запросов, тип метода, дату истечения срока действия, типы носителей клиента, кэширование запросов, версию протокола, версию контента, URL и т.д.

Класс TWebResponse

Используйте потомка TWebResponse для задания ответа на HTTP-запрос. TWebDispatcher создает TWebResponse для объекта TWebRequest HTTP-запроса. Полученная пара, TWebRequest - TWebResponse, передается в соответствующее действие, в результате чего формулируется контент ответа.

Как и в случае с TWebRequest, TWebResponse полностью собирает все возможные ответы, включая такие, как типы MIME, Cookie, HTTP-контент, статус ответа, дата истечения срока действия контента и т.д. Благодаря наличию классов TWebRequest и TwebRespone, разработчик может сфокусировать свое внимание на бизнес-проблемах, а не на технических сложностях API web-сервера или http.

Класс TCustomContentProducer

TCustomContentProducer является базовым классом для всех объектов, создающих контент, который затем посылается клиенту в ответе на HTTP-запросы. Контент может относиться к различным типам: HTML-строка, XML, WML или MIME.

Ниже приведено описание некоторых потомков класса TCustomContentProducer:

Компонент

Описание

TpageProducer

Простой генератор контента HTML-шаблонов

TdataSetTableProducer

Генерирует HTML-таблицу, отображающую записи в наборе данных

TdataSetPageProducer

Распознающий данные генератор страниц, который может использовать набор данных для заполнения ‘прозрачных’ HTML-тегов

TSQLQueryTableProducer

Генерирует HTML-таблицу для записей параметризованного SQL-запроса. Запрос получает параметры от HTTP-запроса.

Генераторы контента распознают специальные теги в соответствующем HTML, которые выглядят как <#tag>. Контент запрашивается у генератора контента; и когда он встречает <#tag>, запускается событие OnHTMLTag, которое замещает тег контентом. Например, возьмем TPageProducer, свойство HTMLDoc которого установлен на HTML (как на рисунке 19).

<html> <body><#date format=dd.mmm.yyyy> </body> </html>

Рисунок 19. Прозрачный HTML #tag.

Использование тегов в HTML-контенте гарантирует хранение реализаций бизнес-правил и кода доступа к данным отдельно от кода представления. Это очень важно для разделения задач разработки в группе разработчиков, для тестирования элементов, скорости выдачи решения и долговечности самого решения.

Если запрашивается контент данного TPageProducer, мы хотим заменить тег <#date> на строку, представляющую текущую дату и время в заданном формате. Для этого потребуется обработчик события OnHTMLTag (см. Рисунок 20).

procedure TWebModule1.EmailFormHTMLTag(Sender: TObject; Tag: Ttag; Const TagString:
String; TagParams: Tstrings; var ReplaceText: String); begin if ( Tag = tgCustom )
and ( TagString = 'date' ) then ReplaceText := FormatDateTime( TagParams.Values['format'], Now ); end;

Рисунок 20. Метод обработчика события OnHTMLTag.

Пример создания CGI-приложения web-сервера Apache с помощью dbExpressTM

Одной из наиболее значимых характеристик Kylix является то, что он облегчает доступ к данным с коммерческих серверов баз данных. Когда это свойство используется в сочетании с NetCLX, организации получают ни с чем не сравнимые преимущества как в отношении производительности труда разработчиков, так и в отношении затрат на интеграцию Linux в уже существующие системы. Проиллюстрируем это на примере, создав простое CGI web-приложение, которое сможет осуществлять поиск заданных в запросе служащих из базы данных InterBase примера employee.gdb. Пользователи получат первичную HTML-форму, куда они могут внести имя служащего, которого хотят запросить в базе данных. Получив запрос, web-приложение откроет соединение с InterBase и выполнит SQL-запрос. Ответ на этот запрос вернется пользователю в виде HTML-таблицы, содержащей список служащих с запрошенным именем.

Для создания нового CGI-web-серверного приложения, выберите элемент File / New из основного меню, а затем выберите значок Web Server Application. Запустится мастер WebBroker Application. Затем выберите ‘CGI Stand-alone executable’ и нажмите OK. Когда отобразится WebModule, добавьте в него следующие компоненты:

Компонент

Закладка Component Palette

TpageProducer

TDataSetTableProducer

Internet

TSQLConnection

TSQLQuery

DbExpress

Теперь WebModule будет выглядеть, как показано на рисунке 21.

Рисунок 21.WebModule с невизуальными компнентами TPageProducer, TSQLConnection, TSQLQuery и TDataSetTableProducer.

PageProducer используется для передачи формы запроса о служащем в HTML-страницу по умолчанию. На рисунке 22 показана установка свойства HTMLDoc на HTML.

<html>
<body bgcolor="#CCCC99">
<form method="post" action="/cgi-bin/qryemp"> <br> Enter employee name<br>
<input type="text" name="empname" size="50"><br>
<br> <input type="submit" name="Submit" value="Query"> </form> </body> </html>

Рисунок 22. HTML-форма генератора страниц по умолчанию.

В свойство списка действий WebModule добавляются два TwebActionItem (см Рисунок 23). Один используется как действие по умолчанию, поэтому его свойство Default установлено на True, а свойство Producer на PageProducer с HTML по умолчанию. Второе действие выполняется, когда пользователь отправляет запрос о служащем обратно из формы по умолчанию.

Рисунок 23. Список действий в WebModule.

Чтобы использовать базу данных, следует установить соответствующее соединение dbExpress. dbExpress поддерживает свойство доступа к данным, которое позволяет разработчикам без труда интегрировать корпоративную информацию в приложения в Kylix. Для установки соединения используйте редактор dbExpress Connections (см. Рисунок 24). Чтобы открыть диалоговое окно щелкните правой кнопкой мыши по компоненту SQLConnections в WebModule. В нашем примере, в результате этого добавилось новое соединение InterBase с именем ‘IBEmployee’. После того, как соединение установлено, его можно проверить с помощью кнопки ‘check test connection’ (проверить тестовое соединение).

Рисунок 24. Редактор dbExpress Connections.

Теперь переходим к обработчику событий OnAction для выполнения действия по отправке почты. Он используется для открытия соединения dbExpress, выполнения SQL-запроса и формирования контента ответа с помощью DataSetTableProducer (см. Рисунок 25). Для того, чтобы вы могли увидеть все логические соединения, все соединения были установлены в исходном коде метода. Это легко можно сделать во время проектирования с помощью Object Inspector.

procedure
TWebModule1.WebModule1Actions1Action
(Sender: Tobject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
begin
{open database connection}
SQLConnection1.LoginPrompt := False;
SQLConnection1.ConnectionName := 'IBEmployee'; SQLConnection1.Open;
{connect query object to database}
SQLQuery1.SQLConnection := SQLConnection1;
{run query against database}
SQLQuery1.SQL.Text :=
'select emp_no, first_name, last_name from employee '+ 'where first_name like ' + '"'
+ Request.ContentFields.Values[ 'empname' ] + '"'; SQLQuery1.Open;
{connect producer to query}
DataSetTableProducer1.DataSet := SQLQuery1;
{set response content to producer}
Response.Content := DataSetTableProducer1.Content;
{close query and database connection}
SQLQuery1.Close; SQLConnection1.Close;
end
;

Рисунок 25. Обработчик событий OnAction, открывающий DB-соединение, запрашивающий и формирующий контент.

Так как создание кода для данного предложение теперь завершено, необходимо скомпилировать и перенести полученный исполняемый файл в cgi-bin-каталог сервера Apache.

Перед компиляцией вы можете выбрать Projects / Options из основного меню, затем выбрать закладку Directories и установить Output path к своему /cgi-bin-каталогу. Кроме того, необходимо добавить соответствующие записи (как было описано в первом примере приложения) в файл httpd.conf (конфигурация демона http).

На рисунках 26 и 27 показано выполнение web-приложения в браузере, в данном случае KDE Konqueror. Хотим отметить, что здесь можно использовать любой броузер.

Рисунок 26. Запрос на ввод имени служащего.

Рисунок 27. Результаты запроса отображаются в HTML-таблице.

Попытайтесь проделать описанную выше процедуру сами, и вы увидите, как легко и быстро можно создавать в Kylix web-приложение со ссылками на данные для Apache.



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 18.06.2001 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ZBrush 4R6 Win Commercial Single License ESD
IBM DOMINO COLLABORATION EXPRESS AUTHORIZED USER LICENSE + SW SUBSCRIPTION & SUPPORT 12 MONTHS
ESET NOD32 Антивирус на 1 год для 3ПК или продление на 20 месяцев
VMware Workstation 14 Player for Linux and Windows, ESD
VCL Subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерный дизайн - Все графические редакторы
СУБД Oracle "с нуля"
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100