Ключевые свойства компонента TWebActionItem
Примеры использования свойств
TWebActionItem можно найти в демонстрационном приложении InetXCenter (модуль
InextXCenterModule.pas).
Невизуальные
компоненты категории PageItems (элементы HTML-документа)
Компоненты PageItems
предназначены для формирования структуры HTML-документа. Точно так же, как и
компоненты VCL, они подразделяются на средства отображения типовых элементов
HTML-документа и элементов для обработки данных, получаемых от сервера
приложений. Для каждого из этих компонентов могут быть созданы наследники,
расширяющие их свойства или реализующие те элементы HTML, эквивалента которым
нет в текущей реализации InternetExpress. Реализация компонентов PageItems
находится в модуле MidItems. При построении HTML-документа компоненты
PageItems объединяются в иерархические структуры. Например, компонент
TDataNavigator содержит компоненты типа TDataSetButton
На этапе генерации содержания
HTML-документа компонентом TMIDASPageProducer эти компоненты генерируют
фрагменты HTML-кода, описывающего эквивалентные HTML-элементы. Эти фрагменты
собираются TMIDASPageProducer в единый поток и подставляются вместо
соответствующих тэгов в шаблоне документа. К элементам HTML привязываются
обработчики на JavaScript, которые составляют аналог обработчиков событий для
визуальных компонентов Delphi, таких, как OnClick и тому подобных. Отдельные
компоненты PageItems позволяют напрямую задать мишень (target) для передачи
сообщений (свойство Action) в формате URI, что позволяет осуществлять переход от
одного HTML-документа к другому передачу параметров в формате протокола HTTP
между этими документами.
За счет использования в
TMIDASPageProducer шаблонов для генерации HTML-документов появляется возможность
добавлять отдельные визуальные и невизуальные элементы HTML-документа прямым
редактированием. Однако используя обработчики событий HTTP можно связывать такие
элементы с генерируемыми по шаблону через компоненты TWebActionItem или при
помощи создаваемых опять-таки прямым редактированием обработчиков на JavaScript
внутри HTML-документа.
Компонент TXMLBroker
Этот компонент осуществляет
передачу пакетов данных в формате XML от сервера приложений HTML-клиенту,
получение изменений в данных от HTML-клиента, расшифровку разностных пакетов
данных XML и передачу информации об изменениях в данных на сервер приложений.
Реализация компонента находится в модуле xmlbrokr.
Компонент TXMLBroker может
быть использован в приложении, которое одновременно является и MIDAS-клиентом, и
серверным Web-приложением. Серверы такого класса как правило имеют две основные
функции:
получать пакеты XML-данных от сервера
приложений через интерфейс IAppServer. Обрабатывать сообщения HTTP от броузеров,
содержащие пакеты XML-данных с изменениями относительно исходного набора и
передавать их серверу приложений.
Для того, чтобы сделать
информацию, содержащуюся в базе данных, доступной в формате XML, достаточно
добавить компонент TXMLBroker в контейнер WebModule совместно с компонентом
TMIDASPageProducer, который будет использовать XML-пакеты данных для создания
HTML-страниц.
TXMLBroker автоматически
регистрирует себя в Web-модуле (или Web-диспетчере) как автодиспетчеризуемый
объект (auto-dispatching object). Это означает, что Web-модуль или Web-диспетчер
будут перенаправлять все входящие HTTP-сообщения непосредственно этому. Все
входящие сообщения считаются данными для обновления, порождаемыми броузером в
ответ на получение HTML-потока, порождаемого компонентом TApplyUpdatesButton.
TXMLBroker автоматически передает пакет с XML-данным, содержащий различия в
данных, на сервер приложений и возвращает все ошибки, возникшие при обновлении
данных тому компоненту управления содержимым (TMIDASPageProducer) документа,
который имеет возможность генерации соответствующего ответного сообщения
Свойство
|
Назначение
|
AppServer
|
Интерфейс IAppServer, служащий для
связи с провайдерами (providers) данных
|
MaxErrors
|
Максимальное число ошибок, по
достижении которого соответствующий провайдер должен прекратить операцию
обновления данных.
|
MaxRecords
|
Управляет формированием пакетов данных
XML.
Значение -1 позволяет компоненту передать все записи из набора данных в
XML-пакет;
Значение 0 позволяет передачу только метаданных;
Значение больше нуля собственно определяет число записей (строк),
которые могут быть переданы в XML-пакет.
|
Params
|
Список параметров, передаваемых
серверу приложений. Используется, в частности, для передачи параметров
хранимых процедур и SQL-запросов.
|
ProviderName
|
Имя провайдера данных
|
ReconcileProducer
|
Ссылка на компонент
TReconcilePageProducer, который будет использоваться при разрешении
конфликтов данных во время операций обновления.
|
WebDispatch
|
Перечисляет типы сообщений протокола
HTTP, на которые будет реагировать компонент. Как правило, эти сообщения
порождаются при нажатии кнопки типа TApplyUpdatesButton на
HTML-странице.
|
Ключевые свойства
компонента TXMLBroker
Построение Web-приложения на
основе InternetExpress
Для создания Web-приложения
необходимо наличие скомпилированного и зарегистрированного приложения-сервера
данных. В данном примере используются данные из таблицы biolife.db, входящей в
состав демонстрационной базы данных из комплекта Delphi 5. Данные публикуются
через контейнер Remote Data Module.
Remote Data Module демонстрационного
сервера данных.
После создания и регистрации сервера данных
необходимо создать клиента для этого сервера, который, в свою очередь, будет
являться сервером для HTML-клиента, являющегося третьим звеном в нашей системе.
Delphi 5 предоставляет специальный мастер для создания приложений-расширений
Web-сервера. Он может быть вызван через меню File->New->Web Server Application и
имеет следующий вид:
Мастер создания серверных
Web-приложений.
В данном случае мы создаем
CGI-приложение, выводящее порождаемый поток данных в устройство стандартного
вывода (stdout). Поток данных этого приложения будет без изменений передан
вызывающему документу через транспортный протокол.
Мастер автоматически создаст
контейнер типа TWebModule, в который необходимо поместить компоненты
TMIDASPageProducer и TXMLBroker. Сюда же мы поместим и компонент
TDCOMConnection, который будем использовать для подключения с удаленным сервером
данных, а также компонент TClientDataSet для доступа к удаленному модулю данных.
Контейнер WebModule с
размещенными в нем компонентами TXMLBroker и TMIDASPageProducer.
Определив необходимые для
соединения с удаленным сервером свойства, переходим к созданию содержимого
HTML-документа. Для этого необходимо назначить для TXMLBroker свойства
RemoteServer и ProviderName, а также создать хотя бы один компонент
TWebActionItem, вызвав соответствующий редактор по правой кнопке мыши на
компоненте TXMLBroker и TMIDASPageProducer.
Всплывающее меню и
ActionEditor.
Далее необходимо вызвать редактор Web-страниц, для чего необходимо выбрать пункт
всплывающего меню компонента TMIDASPageProducer->Web Page Editor.
Примечание: для работы этого элемента необходимо наличие установленного
Microsoft Internet Explorer 4.0 и выше.
После добавления необходимых элементов мы получаем готовое к применению
приложение Web-сервера. При установке параметров отображения HTML-документа
можно воспользоваться свойствами компонента DataGrid и других элементов
HTML-документа для придания ему необходимого внешнего вида, а также вручную
доработать HTML-код в соответствующем встроенном редакторе.
Встроенное средство просмотра
HTML. Красным выделены автоматически сгенерированные ссылки на библиотеки
JavaScript.
После компиляции исполняемый модуль (в нашем примере - XMLServerApp.exe)
необходимо поместить в каталог Web-сервера, для которого выделены права на
запуск приложений. В этот же каталог необходимо поместить перечисленные в
разделе "Серверная часть Internet-приложения на основе InternetExpress"
библиотеки JavaScript. Для проверки правильности размещения библиотек можно
воспользоваться специальным HTML-файлом scripttest.html, который находится в
каталоге Demos\Midas\InternetExpress\TroubleShoot на компакт-диске Delphi 5 или
в каталоге установки на жестком диске рабочей станции. Этот HTML-файл проверяет
правильность размещения библиотек и настройки Web-сервера и в случае наличия тех
или иных ошибок выдает некоторые рекомендации по разрешению проблем.
После того, как настройка закончена, можно обратиться к нашему приложению
напрямую через протокол HTTP, поскольку оно порождает полноценный HTML-документ,
не требующий дополнительной "обвязки".
Окно броузера Netscape
Navigator со страницей, порожденной демонстрационным приложением InternetExpress.
Примечание: В приводимом выше рисунке выделенный красной рамкой текст добавлен
путем вставки в HTML-шаблон строки вида:
<div align="left"><b><font color="#0000A0">
Демонстрационный пример приложения InternetExpress
</font></b></div>
Несколько советов
Демонстрационное приложение для данного обзора тестировалось под управлением
серверов Apache 1.3.6 для платформы Win32 и Microsoft Personal Web Server.
Сервер Apache после установки был сконфигурирован следующим образом:
В корневом каталоге документов был создан подкаталог iexpress (F:\inetpub\iexpress),
в который были помещены файлы, необходимые для работы приложения InternetExpress
(библиотеки JavaScript, файл err.html).
В файл mime.types (перечень mime-типов) была внесены исправления, определяющие
библиотеки JavaScript для передачи на клиентское место, а для исполнения на
сервере вводящие новое расширение: text/javascript js
application/x-javascript jss
Свойству компонента TMIDASPageProducer.IncludePathURL было присвоено значение "/iexpress/"
с целью указать местонахождение библиотек JavaScript, поскольку по умолчанию
TMIDASPageProducer по умолчанию предполагает размещение этих файлов в том же
каталоге, что и исполняемый (.exe) модуль, однако в случае использования Apache
содержимое каталога /cgi-bin/ по умолчанию считается исполняемым на стороне
сервера и требуется дополнительная настройка с целью определить модули с
расширением .js и .html как неисполняемые.
Настройка MS Personal Web Server заключалась в определении дополнительного
каталога для серверных приложений (того же что и для Apache) и задания для него
соответствующих прав доступа (Read и Execute).
Как показало тестирование, при отладке приложений InternetExpress удобнее
пользоваться броузером Netscape Navigator (использовались версии 4.61 и 4.7),
поскольку в случае возникновения ошибок он дает более полную диагностическую
информацию нежели MSIE, старающийся "защитить" пользователя от различных
"загадочных" сообщений. К тому же Netscape корректно обрабатывает обращения к
localhost в отсутствие соединения с Internet.
Для отладки приложений InternetExpress также удобнее создавать их в
CGI-варианте, поскольку IIS, Personal Web Server и Apache не блокируют по записи
CGI-приложения в отличие от ISAPI/ASP, которые захватываются кэш-системой этих
серверов и для освобождения (например для перезаписи новой версией) exe-файла
требуется остановка и повторный запуск web-сервера. В то же время преобразование
CGI-приложение в ISAPI или ASP выполняется простой заменой включения (uses)
модуля CGIApp на ISAPIApp в исходном тексте проекта.
Приводимое здесь демонстрационное приложение отнюдь не претендует на полноту и
законченность. Для более полного ознакомления с возможностями InternetExpress
рекомендуется обратиться к демонстрационным примерам из поставки Delphi 5
Enterprise, находящиеся в каталоге Runimage\Delphi50\Demos\Midas\InternetExpress
на компакт-диске или в D:\Delphi5\Demos\Midas\InternetExpress (или ином, в
зависимости от пути установки Delphi) на жестком диске. Внимательно прочитайте
сопроводительные файлы к этим примерам, поскольку некоторые из них требуют
специфических настроек Delphi и (или) Web-сервера.
|