|
Использование технологии InternetExpress в Borland Delphi
Одной из примечательных возможностей Borland Delphi 5 является технология InternetExpress - средство обработки и публикации данных в Internet на основе технологии MIDAS.
В Delphi реализован набор компонентов, позволяющих реализовать полный цикл клиент-серверной обработки данных на базе Internet как с использованием средств создания приложений на основе ISAPI/NSAPI, ASP и CGI, так и новых технологий, к примеру, стандарта XML (eXtended Markup Language). Я считаю необходимым сказать пару слов об этом стандарте.
Сегодня XML может использоваться в любых приложениях, которым нужна структурированная информация - от сложных геоинформационных систем с огромными объемами передаваемой информации до обычных настольных ("десктоповских") программ, использующих этот язык для описания служебной информации. При внимательном взгляде на окружающий нас информационный мир можно выделить огромное число задач, связанных с созданием и обработкой структурированной информации, для решения которых может использоваться XML:
· в первую очередь, эта технология может оказаться полезной для разработчиков сложных информационных систем, с большим количеством приложений, связанных потоками информации самой различной структуры. В этом случае XML-документы могут играть роль универсального формата для обмена информацией между отдельными компонентами большой программы;
· XML-документы могут использоваться в качестве промежуточного формата данных в трехзвенных системах. Обычно схема взаимодействия между серверами приложений и баз данных зависит от конкретной СУБД и диалекта SQL, используемого для доступа к данным. Если же результаты запроса будут представлены в некотором универсальном текстовом формате, то звено СУБД как таковое станет "прозрачным" для приложения. Кроме того, сегодня на рассмотрение W3C предложена спецификация нового языка запросов к базам данных XQL (eXtensible Query Language), который в будущем может стать альтернативой SQL;
· язык XML позволяет описывать данные произвольного типа и используется для представления специализированной информации, например химических, математических, физических формул, медицинских рецептов, нотных записей, и т.д. Это означает, что XML может служить мощным дополнением к HTML для распространения в Web "нестандартной" информации. Возможно, в самом ближайшем будущем XML полностью заменит собой HTML, по крайней мере, первые попытки интеграции этих двух языков уже делаются;
· XML является базовым стандартом для нового языка описания ресурсов, RDF, позволяющего упростить многие проблемы в Web, связанные с поиском нужной информации, обеспечением контроля за содержимым сетевых ресурсов, создания электронных библиотек и т.д.;
· информация, содержащаяся в XML-документах, может изменяться, передаваться на машину клиента и обновляться по частям. Разрабатываемые спецификации XLink и Xpointer позволят ссылаться на отдельные элементы документа, c учетом их вложенности и значений атрибутов;
· использование стилевых таблиц (XSL - Extensible Stylesheet Language) позволяет обеспечить независимое от конкретного устройства вывода отображение XML-документов;
· XML может использоваться в обычных приложениях для хранения и обработки структурированных данных в едином формате.
XML-документ представляет собой обычный текстовый файл, в котором при помощи специальных маркеров создаются элементы данных, последовательность и вложенность которых определяет структуру документа и его содержание. Основным достоинством XML-документов является то, что при относительно простом способе создания и обработки (обычный текст может редактироваться любым текстовым процессором и обрабатываться стандартными XML-анализаторами), они позволяют создавать структурированную информацию, которую хорошо "понимают" компьютеры.
Итак, вернемся к основной теме нашего разговора.
В InternetExpress используются средства поддержки XML из MIDAS 3. Поскольку в настоящее время не все Internet-браузеры поддерживают представление данных по стандарту XML, в InternetExpress реализована специальная технология поддержки XML на основе JavaScript и DHTML, позволяющая использовать InternetExpress браузерами, не поддерживающими XML. Кроме того, если приложение InternetExpress работает с IE 5, то порождаемый XML-пакет будет специальным образом оптимизироваться. В браузерах, не имеющих встроенной поддержки XML, пакеты данных в этом формате разбираются с использованием специального модуля JavaScript (xmldom.js), который реализует спецификацию DOM (Document Object Model). Объектная модель XML-документов является представлением его внутренней структуры в виде совокупности определенных объектов. Для удобства эти объекты организуются в некоторую древообразную структуру данных - каждый элемент документа может быть отнесен к отдельной ветви, а все его содержимое, в виде набора вложенных элементов, комментариев, секций CDATA и т.д., представляется в этой структуре поддеревьями. Т.к. в любом правильно составленном XML-документе обязательно определен главный элемент, то все содержимое можно рассматривать как поддеревья этого основного элемента, называемого в таком случае корнем дерева документа.
Объектное представление структуры документа не является чем-то новым для разработчиков. Для доступа к содержимому HTML-страницы в сценариях давно используется объектно-ориентированный подход, - доступные для Java Script или VBScript элементы HTML-документа могли создаваться, модифицироваться и просматриваться при помощи соответствующих объектов. Но их список и набор методов постоянно изменяется и зависит от типа браузера и версии языка. Для того чтобы обеспечить независимый от конкретного языка программирования и типа документа интерфейс доступа к содержимому структурированного документа в рамках W3- консорциума, была разработана и официально утверждена спецификация объектной модели DOM Level 1.
DOM - это спецификация универсального платформо- и программно-независимого доступа к содержимому документов и является просто своеобразным API для их обработчиков. DOM является стандартным способом построения объектной модели любого HTML или XML-документа, при помощи которой можно производить поиск нужных фрагментов, создавать, удалять и модифицировать его элементы.
DOM является одним из наиболее мощных интерфейсов доступа к содержимому XML-документов.
Объектное представление структуры документа не является чем-то новым для разработчиков. Для доступа к содержимому HTML-страницы в сценариях давно используется объектно-ориентированный подход, - доступные для Java Script или VBScript элементы HTML-документа могли создаваться, модифицироваться и просматриваться при помощи соответствующих объектов. Но их список и набор методов постоянно изменяется и зависит от типа браузера и версии языка. Для того чтобы обеспечить независимый от конкретного языка программирования и типа документа интерфейс доступа к содержимому структурированного документа, в рамках W3- консорциума была разработана и официально утверждена спецификация объектной модели DOM Level 1.
Для описания интерфейсов доступа к содержимому XML-документов в спецификации DOM применяется платформонезависимый язык IDL (Interface Definition Language) и для использования их необходимо "перевести" на какой-то конкретный язык программирования. Однако этим занимаются создатели самих анализаторов, нам можно ничего не знать о способе реализации интерфейсов - с точки зрения разработчиков прикладных программ DOM выглядит как набор объектов с определенными методами и свойствами.
Итак, на закладке InternetExpress панели компонентов вы можете увидеть две иконки, соответствующие двум компонентам базового набора: TXMLBroker и TMIDASPageProducer.
За формирование XML-пакета отвечает TXMLBroker. Также в его функции входят реакция на изменения в данных и оповещение о действиях, выполняемых клиентом. TMIDASPageProducer отвечает за формирование сборного DHTML-документа, который, собственно, и является клиентским приложением, поскольку содержит все те визуальные элементы, которые соответствуют структуре пакета данных XML. В этот документ передаются XML-пакеты, формируемые компонентом XMLBroker.
В момент, когда приходит сообщение о необходимости изменения информации от клиентского приложения на сервер приложений, TMIDASPageProducer осуществляет опрос каждого из элементов управления HTML, формирует пакет с данными, подлежащими обновлению, и передает их серверу приложений. Таким образом, обработка данных на клиенте происходит с использованием средств HTML, а передача структурированных данных к клиенту и изменений от него - при помощи пакетов данных XML.
Эти компоненты помещаются в web-модуль (WebModule) серверного приложения, для создания которого может быть использован специальный мастер (выбираем пункт меню File->New, а затем нажимаем на иконку Web Server Application).
WebModule является наследником TDataModule и обладает некоторыми дополнительными возможностями по сравнению с базовым классом, которые позволяют обмениваться данными с Web-клиентами. В дополнение к базовому набору InternetExpress имеется несколько компонентов, например TReconcilePageProducer, которые устанавливаются из дополнительных пакетов (packages), входящих в поставку Delphi, и, естественно, существует возможность наследования базовых классов и создания на их основе собственных компонентов с расширенными возможностями.
Помимо визуальных компонентов InternetExpress состоит из ряда классов и интерфейсов, о которых мы поговорим чуть позже.
Компонент TMIDASPageProducer отвечает за сборку HTML-документа, отображающего "живой" набор данных, получаемый от сервера приложений или же "типового" HTML-документа, не осуществляющего обработку данных вообще. Компонент может быть использован для создания Web-приложений на основе MIDAS, которые будут отображать информацию, содержащуюся в базе данных, получая ее через сервер приложений, и передавать ее HTML-клиентам в пакетах данных XML.
При создании Web-модуля ссылка на один из таких компонентов (свойство Producer) должна быть выставлена у соответствующих элементов TWebActionItem.
TMIDASPageProducer создает HTML-документ на основе шаблона. В отличие от других компонентов типа Producer, этот компонент имеет шаблон "по умолчанию" (default), в котором содержатся несколько описаний верхнего уровня, на основе которых в других компонентах порождаются HTML-документы. Помимо шаблонов содержание конечного документа может быть сгенерировано на основе данных, порождаемых другими компонентами, добавленными в Web-модуль, получено от другого компонента TMIDASPageProducer через свойство TMIDASPageProducer.Content и так далее.
Связывание HTML-элементов с пакетами данных XML и обработчиками событий HTTP в TMIDASPageProducer осуществляется исключительно по именам HTML-объектов и соответствующих событий, за счет чего становится возможным редактировать сгенерированный HTML-шаблон любым из средств работы с HTML-документами, придавая ему необходимый внешний вид и дополняя логику обработки данных вставками JavaScript, поскольку даже при изменении свойств объектов, порожденных встроенным редактором TMIDASPageProducer, внесенные другими средствами изменения потеряны не будут.
Расширение функциональности обработчика шаблонов (свойство TMIDASPageProducer.HTMLdoc) возможно за счет реализации обработчика события TMIDASPageProducer.OnHTMLtag или перекрытия метода TMIDASPageProducer.DoTagEvent. Реализовав свою собственную версию обработчика этого события, разработчик получает возможность использовать в теле шаблона документа собственные тэги, заменяя их на этапе генерации HTML-документа соответствующими значениями. Пример такого подхода показан в демонстрационном приложении InetXCenter из состава Delphi 5 (модуль InetXCenterProd.pas).
И, конечно, возможности InternetExpress можно практически неограниченно расширять, реализуя специальные компоненты-наследники от TMIDASPageProducer и компонентов, используемых для формирования содержимого документа (TDataForm, TQueryForm и так далее). Создавая на их основе специализированные компоненты, вы получаете возможность максимально упростить создание конечного решения на основе InternetExpress за счет реализации специфических возможностей, необходимых тому или иному конкретному Internet-приложению. Например, в демонстрационном приложении InetXCenter за счет создания наследника от компонента TMIDASPageProducer реализованы такие возможности, как генерация полей заголовка HTML-документа , задание комментариев и описаний, автоматически подставляемых в конечный HTML-документ, и другие расширения базового компонента.
Поскольку TMIDASPageProducer (TCustomMIDASPageProducer) является собственно генератором содержания HTML-документа, в его описание входит интерфейс IWebContent, который, собственно, это содержание и предоставляет. Заголовок соответствующего класса выглядит следующим образом:
TCustomMIDASPageProducer = class(TPage- ItemProducer, IWebContent, IWebComponentEditor, IScriptEditor)
Помимо IWebContent в описании класса участвуют еще два интерфейса: IWebComponentEditor и IScriptEditor, которые, соответственно, являются средствами связи с design-time-редактором для компонентов типа TWebComponent и HTML-кода. Ниже приведено краткое описание ключевых свойств TMidasPageProducer.
· HTMLDoc - собственно базовый шаблон, содержащий включения (includes) описателей содержания;
· HTMLFile - аналогично HTMLDoc, но с привязкой к файлу;
· IncludePathURL - путь к библиотекам JavaScript (в формате URL). Может быть как полным (http://someserver/iexpress/), т.е. с указанием имени сервера и так далее, так и относительным (/iexpress/);
· Styles - описание стилей "по умолчанию" для генерации HTML-документа. Это свойство является аналогом файла стилей, используемого для создания канонических Web-страниц;
· StylesFile - аналогично Styles, но с привязкой к файлу стилей;
· WebPageItems - список специальных компонентов, определяющих ключевые элементы документа. Основные типы PageItem включают: DataForm, QueryForm и LayoutGroup. Каждый из базовых компонентов TWebPageItem может иметь вложенные компоненты. Например, для DataForm могут иметься DataGrid, DataNavigator и так далее.
Комбинация компонентов TDataForm, TQueryForm и так далее, определяет структуру и основные параметры отображения HTML-документа, стили же (цвета, шрифты и так далее) определяются свойствами Styles и HTMLDoc.
Следует отметить, что за счет использования стандартных компонентов для определения состава элементов HTML-документа, поставляемых в исходных текстах, становится возможным практически неограниченное расширение функциональных возможностей InternetExpress путем создания специализированных наборов компонентов для построения Internet-приложений. Примеры подобного подхода можно найти в демонстрационном приложении InetXCenter из поставки Delphi 5.
Невизуальный компонент TWebActionItem позволяет задавать реакцию Internet-приложения на те или иные события, транслируемые протоколом HTTP от web-клиента. Предоставляя специальные свойства для задания ссылок на компоненты TMIDASPageProducer и TPageProducer, а также пути URL, TWebActionItem дает возможность задавать алгоритм перемещения между HTML-документами, составляющими Internet-приложение, реагировать на передачу параметров и значений полей HTML-документа специфическим образом, и так далее. Реализуя обработчик события TWebActionItem.OnAction, программист получает возможность возвращать необходимые данные в полях запросов, устанавливать идентификационные маркеры (Cookies) для Web-клиентов, контролировать генерацию содержания HTML-документов и выполнять ряд других операций практически на самом нижнем уровне функционирования Internet-приложения. Ключевые свойства компонента TWebActionItem представлены ниже.
· Default - означает использование этого компонента как обработчика событий соответствующих типов (свойство MethodType) в тех случаях, когда явно не задан иной обработчик. Из всех компонентов TWebActionItem, присутствующих в контейнере TWebModule, только один может иметь свойство Default равным True;
· DisplayName - служит для задания отображения компонента в списке компонента TCustomWebDispatcher. Должно быть уникальным для своего контекста;
· Enabled - аналогично многим другим компонентам, означает разрешение или запрет на выполнение связанных с компонентом действий. В случае установки в False содержимое HTML-документа соответствующим компонентом типа PageProducer генерироваться не будет;
· MethodType - определяет метод HTTP, при вызове которого со стороны web-клиента будет задействован данный компонент. По умолчанию имеет значение mtAny, то есть все доступные методы, но может принимать значения отдельных типов, например mtGet (запрос на получение web-клиентом содержимого документа);
· PathInfo - в формате URI (Unified Resource Identifier) задает путь к получателю всех сообщений, принимаемых TWebActionItem. Позволяет перенаправить очередь сообщений другому компоненту PageProducer или HTML-документу;
· Producer - ссылка на компонент PageProducer. В случае если компонент явно не задан, обработчик OnAction должен быть реализован в обязательном порядке для осуществления реакции на сообщение. Если ссылка на PageProducer актуальна (не nil), сообщение обрабатывается или PageProducer, или реализацией OnAction, в случае ее наличия.
Примеры использования свойств TWebActionItem можно найти в демонстрационном приложении InetXCenter (модуль InextXCenterModule.pas).
Поговорим теперь о невизуальных компонентах категории PageItems, которые предназначены для формирования структуры HTML-документа. Точно так же, как и компоненты VCL, они подразделяются на средства отображения типовых элементов HTML-документа и элементов для обработки данных, получаемых от сервера приложений. Для каждого из этих компонентов могут быть созданы наследники, расширяющие их свойства или реализующие те элементы HTML, эквивалента которым нет в текущей реализации InternetExpress. Реализация компонентов PageItems находится в модуле miditems.pas. При построении 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 и передачу информации об изменениях в данных на сервер приложений. Реализация компонента находится в модуле xmlbro-kr.pas.
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-странице.
Серверная часть Internet-приложения, созданного на основе InternetExpress, состоит из исполняемого модуля, написанного в данном случае на Delphi 5, и включающего WebModule, а также файлов-библиотек JavaScript, которые в случае отсутствия поддержки XML браузером передаются на сторону клиента. Ниже перечислены эти библиотеки:
· xmldom.js - XML-парзер, соответствующий стандарту DOM (Document Object Model), написанный на JavaScript. Позволяет браузерам использовать пакеты данных XML, не имея встроенной поддержки этого стандарта. Для IE5 этот файл не передается, а XML-пакет специальным образом оптимизируется;
· xmldb.js - библиотека классов доступа к данным, обслуживающая пакеты данных XML;
· xmldisp.js - библиотека описания связей между классами доступа к данным в xmldb.js и элементами HTML;
· xmlerrdisp.js - библиотека классов для обработки конфликтных ситуаций при внесении изменений в данные. Использует пакет разности данных (XML delta packet) и пакет ошибок (XML error packet);
· xmlshow.js - библиотека функций для отображения окон с данными XML.
Для того чтобы вышеперечисленные библиотеки были переданы клиентской стороне и задействованы там, достаточно просто включить соответствующие ссылки на них в HTML-документ:
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="xmldom.js"> </SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="xmldb.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="xmldisp.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="xmlshow.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="xmlerrdisp.js"></SCRIPT>
Ссылка на xmldom.js требуется только в том случае, если браузер не имеет встроенной поддержки XML.
Клиентская часть приложения на основе InternetExpress представляет собой собственно HTML-документ, порожденный одним или более компонентами TMIDASPageProducer (или его наследниками), интерпретируемый тем или иным браузером. Как уже было сказано выше, этот документ может содержать элементы отображения и управления, соответствующие структуре пакета данных XML. К ним также могут добавляться элементы управления, формирующие HTML-аналог DBnavigator из состава Delphi VCL в том случае, если соответствующие параметры были заданы при настройке PageProducer, а также другие элементы управления HTML, как связанные с обработкой данных, так и составляющие независимые части интерфейса, например группу для ввода имени пользователя и пароля.
Теперь рассмотрим схему работы приложения InternetExpress. Она выглядит следующим образом.
1. Браузер обращается по ссылке (URL) к серверному приложению InternetExpress, возвращающему HTML-документ, который можно рассматривать как некую отправную точку в процессе обработки документа.
2. По запросу пользователя серверное приложение сначала возвращает очередной HTML-документ, содержащий (при необходимости) ссылки на библиотеки JavaScript, отвечающие за обработку XML-пакетов. Затем уже переданный пользователю документ посылает запрос серверной части приложения, которая затем посылает клиенту данные в виде пакетов XML, интерпретируемых соответствующими библиотеками JavaScript.
3. После того как пользователь просмотрел набор данных и, при необходимости, внес в них изменения, он имеет возможность передать изменения серверной части приложения. Этот процесс запускается событием, которое, как правило, связано с элементом управления - "кнопкой" (например, "Submit") и передается серверной части приложения InternetExpress, а именно - компоненту TMIDASPageProducer. Все изменения в данных передаются серверной части приложения в виде разностных пакетов XML (XML delta packets).
4. Серверная часть получает информацию об изменениях в данных и использует сервер приложений для внесения этих изменений в базу данных. При возникновении конфликта (reconcile error) имеется возможность сформировать HTML-вариант Reconcile Dialog из состава Delphi.
И напоследок рассмотрим процесс построения Web-приложения на основе InternetExpress.
Для создания Web-приложения необходимо наличие скомпилированного и зарегистрированного приложения-сервера данных. В данном примере используются данные из таблицы biolife.db, входящей в состав демонстрационной базы данных из комплекта Delphi 5. Данные публикуются через контейнер Remote Data Module.
После создания и регистрации сервера данных необходимо создать клиента для этого сервера, который, в свою очередь, будет являться сервером для HTML-клиента, являющегося третьим звеном в нашей системе. Delphi 5 предоставляет специальный "мастер" для создания приложений-расширений Web-сервера. Он может быть вызван через меню File->New->Web Server Application и имеет вид, представленный на рисунке.
В данном случае мы создаем CGI-приложение, выводящее порождаемый поток данных в устройство стандартного вывода (stdout). Поток данных этого приложения будет без изменений передан вызывающему документу через транспортный протокол.
Мастер автоматически создаст контейнер типа TWebModule, в который необходимо поместить компоненты TMIDASPageProducer и TXMLBroker. Сюда же мы поместим и компонент TDCOMConnection, который будем использовать для подключения с удаленным сервером данных, а также компонент TClientDataSet для доступа к удаленному модулю данных.
Определив необходимые для соединения с удаленным сервером свойства, переходим к созданию содержимого HTML-документа. Для этого необходимо назначить для TXMLBroker свойства RemoteServer и ProviderName, а также создать хотя бы один компонент TWebActionItem, вызвав соответствующий редактор по правой кнопке мыши на компоненте TXMLBroker и TMIDASPageProducer.
В примере используется только один такой компонент, свойство которого Default выставлено в True, за счет чего все сообщения HTTP будут поступать на этот компонент, а от него на TXMLBroker и TMIDASPageProducer.
Далее необходимо вызвать редактор Web-страниц, для чего необходимо выбрать пункт всплывающего меню компонента TMIDASPageProducer->Web Page Editor. Для работы этого элемента необходимо наличие установленного Microsoft Internet Explorer 4.0 и выше.
После добавления необходимых элементов мы получаем готовое к применению приложение Web-сервера. При установке параметров отображения HTML-документа можно воспользоваться свойствами компонента DataGrid и других элементов HTML-документа для придания ему необходимого внешнего вида, а также вручную доработать HTML-код в соответствующем встроенном редакторе.
После компиляции исполняемый модуль (в нашем примере - XMLServerApp.exe) необходимо поместить в каталог Web-сервера, для которого выделены права на запуск приложений. В этот же каталог необходимо поместить перечисленные в разделе "Серверная часть Internet-приложения на основе InternetExpress" библиотеки JavaScript. Для проверки правильности размещения библиотек можно воспользоваться специальным HTML-файлом scripttest.html, который находится в каталоге Demos\Midas\InternetExpress\TroubleShoot на компакт-диске Delphi 5 или в каталоге установки на жестком диске рабочей станции. Этот HTML-файл проверяет правильность размещения библиотек и настройки Web-сервера и в случае наличия тех или иных ошибок выдает некоторые рекомендации по разрешению проблем.
После того как настройка закончена, можно обратиться к нашему приложению напрямую через протокол HTTP, поскольку оно порождает полноценный HTML-документ, не требующий дополнительной "обвязки".
Рассматриваемое в рамках данной статьи демонстрационное приложение отнюдь не претендует на полноту и законченность. Для более полного ознакомления с возможностями InternetExpress я рекомендую обратиться к демонстрационным примерам из поставки Delphi 5 Enterprise, находящимся в каталоге Runimage\Delphi50\Demos\Midas\InternetExpress на компакт-диске или в E:\Delphi5\Demos\Midas\InternetExpress (или ином, в зависимости от пути установки Delphi) на жестком диске. Внимательно прочитайте сопроводительные файлы к этим примерам, поскольку некоторые из них требуют специфических настроек Delphi и/или Web-сервера.
Возможности, предоставляемые средой разработки Borland Delphi 5.0 в области создания Internet-приложений, естественно, не ограничиваются рассмотренной в данной статье технологией. Рассказанное мной может являться лишь отправной точкой для исследования принципов разработки Internet-систем в Delphi.
Сергей Кривошеев
www.comprice.ru
Что необходимо знать программисту 20-08-2008 Работа с информацией на предприятиях 21-09-2008 Что необходимо знать программисту CodeNet / Остальное / Разное Автор: Рудюк С.А., Компания НеРуСофт3 октября 2005 годаhttp://nerusoft.com/Мы постоянно слышим такие слова, как <век информации>, <информационные технологии>, <кто владеет информацией, тот владеет миром> и т.д. и т.п. В наше сознание уже внедрена мысль, что информация - это все.Но, что делать с этой информацией и для чего она, в конечном счете, нужна и вообще, что это?Большинство лю...
Sun запустила проект Kentai для хостинга открытого программного обеспечения 16-09-2008 Что необходимо знать программисту Компания Sun Microsystems намерена конкурировать с Google в части проектов Google Code или системой GitHub. Производитель ОС Solaris сегодня сообщил о запуске проекта Kenai, цель которого заключается в предоставлении хостинга для открытого программного обеспечения. Первая публичная бета-версия проекта появилась в конце прошлой недели.На серверах проекта Kentai разработчики могут бесплатно размещать свои проекты, причем в Kentai изначально реализо...
Использование шаблонов при программировании WEB-приложений 07-09-2008 Что необходимо знать программисту (c) Сергей Томулевич, 13.08.2003www.webscript.ruЗачем вообще использовать шаблоны?Может, кто-то скажет, а зачем выносить HTML код в отдельный файл если его можно спокойно писать в скрипте? Да конечно в скрипте можно писать HTML код, но просмотреть полностью <собранную>, или частично <собранную> страницу которую выводит скрипт, возможно только при его нормальной работе, а во время отладки скрипта, как правило, возникают некот... |